Hashtag preg_replace

时间:2014-04-28 13:04:42

标签: php regex

我有一个正在创建并链接到#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);

2 个答案:

答案 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]+?)