【问题标题】:PHP Twitterify function regex doesn't exclude starting numbersPHP Twitterify 函数正则表达式不排除起始数字
【发布时间】:2014-04-09 23:34:50
【问题描述】:

我正在使用代码

function twitterify($ret) {
    $ret = preg_replace("#(^|[\n ])([\w]+?://[\w]+[^ \"\n\r\t< ]*)#", "\\1<a href=\"\\2\" target=\"_blank\">\\2</a>", $ret);
    $ret = preg_replace("#(^|[\n ])((www|ftp)\.[^ \"\t\n\r< ]*)#", "\\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 出现在推文文本中,则会为其创建一个标签链接。这是不正确的,因为主题标签不能以数字开头。

如何修改正则表达式来纠正这个问题?

还应根据this排除特殊字符。

【问题讨论】:

    标签: php regex twitter hashtag


    【解决方案1】:

    不是这个

    /#(\w+)/
    

    使用这个

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

    确保第一个字符是字母。

    【讨论】:

    • 谢谢。这很简单。
    • 其实我刚刚发现this 的标签规则与我想象的略有不同。正则表达式可能与这些规则不完全匹配,但我不认为将来会使用以数字开头的主题标签。
    猜你喜欢
    • 1970-01-01
    • 2022-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多