PHP Twitterify 函数正则表达式不排除起始数字



我正在使用代码

function twitterify($ret) {
    $ret = preg_replace("#(^|[n ])([w]+?://[w]+[^ "nrt< ]*)#", "\1<a href="\2" target="_blank">\2</a>", $ret);
    $ret = preg_replace("#(^|[n ])((www|ftp).[^ "tnr< ]*)#", "\1<a href="http://\2" target="_blank">\2</a>", $ret);
    $ret = preg_replace("/@(w+)/", "<a href="http://www.twitter.com/\1" target="_blank">@\1</a>", $ret);
    $ret = preg_replace("/#(w+)/", "<a href="http://twitter.com/search?q=\1" target="_blank">#\1</a>", $ret);
    return $ret;
}

从推文中解析文本并添加链接。如果#1出现在Tweet文本中,则将为其创建标签链接。这是不正确的,因为主题标签无法从数字开始。

如何修改正则表达式以纠正此问题?

也应根据此类排除特殊字符。

而不是此

/#(w+)/

使用此

/#([a-zA-Z]w+)/

确保第一个字符是字母。

最新更新