Andreas Vogt: preg_replace ersetzen

Beitrag lesen

Hallo,

...allerdings die Klammern um den Parameter vergessen.

Danke, das hat funktioniert. Bei einem komplexeren Ausdruck funktioniert es allerdings nicht:

$message = preg_replace(
	'/((<a.+\/a>)|(\b'. preg_quote(strtr($word, array('\'' => '&#039;')), '/'). '(?=[^A-Za-z0-9&agrave;-ÖØ-öø-ÿ_\-s]))|(\b'.preg_quote(strtr($word, array('\'' => '&#039;')), '/').'\b))/'. (!empty($modSettings['glossary_none_sensitive']) ? 'i' : '') .'e' ,
	"'\$2' == '\$1' ? stripslashes('\$1') : '<span class=\"glossary\" title=\"".addslashes($definition)."\">$1</span>'", 
	$message, 
	(isset($modSettings['glossary_unique_word']) && $modSettings['glossary_unique_word']==1) ? 1 : -1 
);

Meine übersetzung ist diese:

$message = preg_replace_callback(
	'/((<a.+\/a>)|(\b'. preg_quote(strtr($word, array('\'' => '&#039;')), '/'). '(?=[^A-Za-z0-9&agrave;-ÖØ-öø-ÿ_\-s]))|(\b'.preg_quote(strtr($word, array('\'' => '&#039;')), '/').'\b))/'. (!empty($modSettings['glossary_none_sensitive']) ? 'i' : '') .'e' , 
	function ($match) {
 		return "'$match[1]' == '$match[0]' ? stripslashes('$match[0]') : '<span class=\"glossary\" title=\"".addslashes($definition)."\">$match[0]</span>'";
	},
	$message, 
	(isset($modSettings['glossary_unique_word']) && $modSettings['glossary_unique_word']==1) ? 1 : -1 
);

Die Webseite lädt, die einzelnen Inhalte ($message) fehlen. Es ist doch korrekt $2 durch $match[1] zu ersetzen? Habe es auch mit dem Backslach vor $match probiert, gleiches Ergebnis.

Any Ideas? Gruß Andreas