1
對preg_replace
的以下調用失敗,並在content
包含重音字符(例如à
或ÿ
)時返回空字符串。如何防止重音字符使PHP正則表達式失敗?
preg_replace('@([^=][^"])(https?://([-\w\.]+[-\w])+(:\d+)?(/([\w/_\.\%\+#-]*(\?\S+)?[^\.\s])?)?)@', '$1<a href="$2" target="_blank">$2</a>', $content);
我重寫了preg_replace
正則表達式這種方式,和它的工作:
preg_replace('@([^=][^"])(https?://([-\w\.]+[-\w])+(:\d+)?(/([\w/_\.\%\+#ÂÃÄÀÁÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ-]*(\?\S+)?[^\.\s])?)?)@', '$1<a href="$2" target="_blank">$2</a>', $content);
我怎樣才能使它更短?
我不這麼認爲造成,如果我只放\ W當它看到一個重音字符 – Mireille28
@ chris85它阻止總是:沒有!當使用u修飾符或模式以'(* UCP)'開頭時,'\ w'包含非ASCII字符。即使使用u修飾符或「(* UCP)」,它也不會與具有組合標記的字母匹配。 –
我在哪裏設置你?在我的正則表達式分隔符關閉後? – Mireille28