我有这个preg_match_all来获取主题标签:
preg_match_all('/(^|[^a-z0-9_])#([a-z0-9_]+)/ui', $text, $matchedHashtags);
效果很好,但如果找到一些重点则停止:
#hash //works
#hash_hash //works
#hash_não // get just $hash_n
我需要改变什么?
答案 0 :(得分:3)
您可以使用Unicode category Letter
。
\p{L}
匹配所有Unicode scripts(≅语言)中的字母。
的正则表达式:强>
/(?<![\p{L}0-9_])#([\p{L}0-9_]+)/u
另一种选择是在character class中添加重音字符:
/(?<![a-zãàÀèÈìÌ0-9_])#([a-zãàÀèÈìÌ0-9_]+)/ui
<强> <子> [编辑] 子> 强>
\p
令牌/u
标志时,php支持Unicode。使用以下类别或脚本有一些匹配字母的替代方法:
\p{Latin}
拉丁文\p{L&}
无壳字母\p{L}
所有字母\p{L&}
,Other_Letter和Modifier_Letter。\p{Xan}
任何字母数字字符\p{L}
和\p{N}
Number(来自任何脚本)。\p{Xwd}
任何Perl&#34;字&#34;字符\p{Xan}
和下划线。答案 1 :(得分:1)