我有这个 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
我需要改变什么?
最佳答案
您可以使用 Unicode category 信件
。
\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
代币
php当设置了 /u
标志时支持 Unicode。有一些匹配字母的替代方法,使用以下类别或脚本:
1。 \p{Latin}
拉丁脚本
- 匹配项:Latin script characters来自英语、法语、德语、意大利语、越南语、拉丁语本身和其他几种语言(包括一些修饰字母和其他字母)。
- 代码点:1,349
2。 \p{L&}
无大小写字母
- 匹配项:Lowercase_Letter , Uppercase_Letter和 Titlecase_Letter .
- 代码点:3,646 (1,984 + 1,631 + 31)
3。 \p{L}
所有字母
- 匹配:
\p{L&}
, Other_Letter和 Modifier_Letter . - 代码点:18,057 (3,646 + 14,163 + 248)
4。 \p{Xan}
任何字母数字字符
- 匹配:
\p{L}
和\p{N}
Number (来自任何脚本)。 - 代码点:18,843 (18,057 + 786)
5。 \p{Xwd}
任何 Perl“单词”字符
- 匹配:
\p{Xan}
和下划线。 - 代码点:18,844
关于php - 获取重音 preg_match_all 语法 PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33026519/