我想渲染Utf8文字并链接所有以#
开头并以space
或enter
结尾的标记或任何分隔符,例如\r
\t
{ {1}}。
文字示例:
\n
答案 0 :(得分:2)
我假设你也希望得到那些具有正常ascii字符的人
然后这个:
<?php
$description = 'Текстовые теги #общий #тест
Хиджаб в исламе, философии безопасности #женщин
english #teg #test';
preg_match_all('/(?<=#)\w+(?=\s|$)/u',$description,$matches,PREG_PATTERN_ORDER);
var_dump($matches);
会给你一个数组:
"общий","тест","женщин","teg","test"
u修饰符使得\ w也捕获unicode单词字符
\ w相当于[\p{L}\p{N}_]
:字母,数字或下划线。
(?<=#)
是一个积极的外观,告诉正则表达式在\ w +之前需要有一个#
(?=\s|$)
是一个积极的先行,它告诉正则表达式在\ w +之后需要有一个不可见的字符(\ s相当于[\p{Z}\h\v]
)。
或者行$
的结尾(也是为了捕捉没有它的test
)。
但你可能想要消除这种积极的前瞻。除非您需要后跟空格,因为例如#общий!
不应该匹配。