如何防止重音字符使PHP正则表达式失败?

如何防止重音字符使PHP正则表达式失败?,php,regex,Php,Regex,下面对preg_replace的调用失败,当content包含重音字符,如a或ÿ时,将返回空字符串 preg_replace('@([^=][^"])(https?://([-\w\.]+[-\w])+(:\d+)?(/([\w/_\.\%\+#-]*(\?\S+)?[^\.\s])?)?)@', '$1<a href="$2" target="_blank">$2</a>', $content); 如何缩短它?使用unicode可以解决您的问题 [\u00bf-\u0

下面对
preg_replace
的调用失败,当
content
包含重音字符,如
a
ÿ
时,将返回空字符串

preg_replace('@([^=][^"])(https?://([-\w\.]+[-\w])+(:\d+)?(/([\w/_\.\%\+#-]*(\?\S+)?[^\.\s])?)?)@', '$1<a href="$2" target="_blank">$2</a>', $content);

如何缩短它?

使用unicode可以解决您的问题


[\u00bf-\u00ff]

我不这么认为,因为如果我只在看到重音符号时\w它总是被阻塞character@chris85:不<当使用u修饰符或模式以
(*UCP)
开头时,code>\w包含非ascii字符。即使使用u修饰符或
(*UCP)
,它也不匹配带有组合标记的字母?在我的正则分隔符关闭之后?@casimirithippolyte-Oh,
是组合字符,没有看到。你是怎么发现的?@Mireille28我想你是在寻找一个不同版本的角色,而不是组合口音的角色。
preg_replace('@([^=][^"])(https?://([-\w\.]+[-\w])+(:\d+)?(/([\w/_\.\%\+#ÂÃÄÀÁÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ-]*(\?\S+)?[^\.\s])?)?)@', '$1<a href="$2" target="_blank">$2</a>', $content);