preg_replace funzt auf anderem Server nicht

Bash, Shell, PHP, Python, Perl, CGI
nils_eckert
Posts: 41
Joined: 2002-11-30 12:05

preg_replace funzt auf anderem Server nicht

Post by nils_eckert »

Hallo zusammen,

ich habe heute versucht eine Webseite auf einen neuen Server zu überspielen, aber da will mein preg_replace nicht funktionieren.

Code: Select all

function linkGlossarWords($text) {
	$glossarWords = getGlossarWords();
	foreach ($glossarWords as $elem) {
		$text = preg_replace("/($elem)(\W)/", '<a class="text" href="javascript:openGlossar('${1}')">${1}</a>${2}', $text);
	}
	return $text;
}
Diese Funktion holt sich ein Array mit allen Wörtern des Glosars und ersetzt dann im Text jedes dieser Wörter durch einen Link aufs Glosar zu diesem Wort.

Auf meinem alten Server lief das auch problemlos.

Auf dem neuen Server ersetzt Sie das Wort zwar, übernimmt aber ${1} und ${2} nicht, sondern fügt diese als String in den Code ein.

Ich vermute daher, dass es nicht am Code, sondern an der Konfiguration (php.ini) liegt.

Der alte Server lief mit PHP 4.3.1 und der neu nur mit 4.1.2.

Jedoch will Debian das nicht updaten, da es meint, es sei die aktuellste Version und selber kompilieren weiss ich nicht, wie das geht, ohne dass ich danach immer alles selber kompiliren muss.

Auf dem alten habe ich das zwar gemacht, das war mir dann aber doch zu nervig!

Viele Grüße,

Nils
nils_eckert
Posts: 41
Joined: 2002-11-30 12:05

Re: preg_replace funzt auf anderem Server nicht

Post by nils_eckert »

Habs gelöst :)

Wie peinlich :)

Irgendwie kann man wohl ab PHP Version irgendwas größer als 4.1.2 ${1} schreiben um danach direkt mit Zahlen weiter arbeiten zu können.

z.B. ${1}1 oder sowas.

habs jetzt in

Code: Select all

function linkGlossarWords($text) {
	$glossarWords = getGlossarWords();
	foreach ($glossarWords as $elem) {
		$text = preg_replace("/($elem)(\W)/", "<a class="text" href="javascript:openGlossar('$1')">$1</a>$2", $text);
	}
	return $text;
}
geändert und es geht wieder :D

Viele Grüße und ein frohes Fest!

Nils