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('\'' => ''')), '/'). '(?=[^A-Za-z0-9à-ÖØ-öø-ÿ_\-s]))|(\b'.preg_quote(strtr($word, array('\'' => ''')), '/').'\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('\'' => ''')), '/'). '(?=[^A-Za-z0-9à-ÖØ-öø-ÿ_\-s]))|(\b'.preg_quote(strtr($word, array('\'' => ''')), '/').'\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