1
Der folgende Aufruf an preg_replace
schlägt fehl und gibt eine leere Zeichenfolge zurück, wenn content
Akzentzeichen wie à
oder ÿ
enthält.Wie verhindert man, dass Zeichen mit Akzent einen PHP-Regex zum Scheitern bringen?
preg_replace('@([^=][^"])(https?://([-\w\.]+[-\w])+(:\d+)?(/([\w/_\.\%\+#-]*(\?\S+)?[^\.\s])?)?)@', '$1<a href="$2" target="_blank">$2</a>', $content);
schrieb ich die Regex in preg_replace
auf diese Weise, und es funktionierte:
preg_replace('@([^=][^"])(https?://([-\w\.]+[-\w])+(:\d+)?(/([\w/_\.\%\+#ÂÃÄÀÁÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ-]*(\?\S+)?[^\.\s])?)?)@', '$1<a href="$2" target="_blank">$2</a>', $content);
Wie kann ich es kürzer machen?
Ich denke nicht so führen, wenn ich nur setzen \ w es immer blockieren, wenn es eine akzentuierte Zeichen – Mireille28
@ chris85 sehen: nein! '\ w' enthält nicht-ASCII-Zeichen, wenn der Modifikator u verwendet wird oder wenn das Muster mit' (* UCP) 'beginnt. Und selbst wenn der Modifikator u oder '(* UCP)' verwendet wird, stimmt es nicht mit Buchstaben mit einer Kombinationsmarkierung überein. –
wo setze ich das? nach dem Schließen meines Regex-Begrenzers? – Mireille28