我有一个正在创建并链接到#hashtags
的网络应用,我注意到如果有人创建#hashtag
#JB22
,则以下代码会中断。
在正则表达式中是否存在我可以在#hashtag
$users = preg_replace("~(<var data-type=\"user\" class=\"userHighlight\" id=\"(.*?)\">)(.*?)(</var>)~", "<_link>$2|$3</_link> ", $start);
$tags = preg_replace("~(<var data-type=\"tag\" class=\"tagHighlight\" id=\"(.*?)\">)#(.*?)(</var>)~", "<_link>tag://$3|#$3</_link> ", $users);
$last = preg_replace("~(^|\\s)#(\\w*[a-zA-Z_]+\\w*)~", " <_link>tag://$2|#$2</_link> ", $tags);
答案 0 :(得分:3)
您应该能够将0-9块添加到正则表达式中以搜索数字:
$last = preg_replace("~(^|\\s)#(\\w*[a-zA-Z0-9_]+\\w*)~", " <_link>tag://$2|#$2</_link> ", $tags);
注意:您应该使用某种DOM Document解析器进行HTML / XML标记。
答案 1 :(得分:2)
将此[a-zA-Z_]+
替换为[a-zA-Z_0-9]+
,或者如果您希望这些数字仅位于模式的末尾,则可以使用([a-zA-Z_]+?[a-zA-Z_0-9]+?)
。