【问题标题】:twitter regex for displaying text as url but not if it is meant as texttwitter 正则表达式,用于将文本显示为 url,但如果它是文本则不显示
【发布时间】:2010-06-20 11:49:47
【问题描述】:

有人可以帮我调整这个正则表达式吗?

我有这个用于 twitter 的正则表达式,如果我拼写一个像 R@chard 这样的词,它想把它变成一个 URL。在 Twitter 本身上,它可以正确显示。

删除最后一行可能很明显,尽管我对形成正则表达式不太了解。也许还有一个更智能的用于 Twitter 的?

另外,我有一个 ajax twitter 更新程序,它显示问号占位符。 它们是什么,正则表达式可以摆脱它们吗?

这是我的代码

function format_tweet($str) 
    {
$formatted_text = preg_replace('/(\b(www\.|http\:\/\/)\S+\b)/', "<a target='_blank' href='$1'>$1</a>", $str);
$formatted_text = preg_replace('/\#(\w+)/', "<a target='_blank' href='http://search.twitter.com/search?q=$1'>#$1</a>", $formatted_text);
$formatted_text = preg_replace('/\@(\w+)/', "<a target='_blank' href='http://twitter.com/$1'>@$1</a>", $formatted_text);
return $formatted_text;
}

谢谢,理查德

【问题讨论】:

    标签: php regex url


    【解决方案1】:

    试试:

    $formatted_text = preg_replace('/(?:^|\s)[#](\w+)/', "<a target='_blank' href='http://search.twitter.com/search?q=$1'>#$1</a>", $formatted_text);
    $formatted_text = preg_replace('/(?:^|\s)[@](\w+)/', "<a target='_blank' href='http://twitter.com/$1'>@$1</a>", $formatted_text);
    

    关于问号,我不知道。如果您发布一些代码,也许我可以提供帮助。

    【讨论】:

    • 谢谢,我会试试这个。至于问号,我只能在公共时间线中看到它们,并且使用完全相同的代码。我没有在我的用户时间线中看到它们,但那是因为我没有发布太多(奇怪的东西)。无论如何,我不知道它代表什么。至于更智能的正则表达式,我的意思是要去掉推文中真正的问号或感叹号,比如在一个句子后发短信 100 次?
    • 你可以试试preg_replace('~.*[!?]{2,}~', '?', $tweet);去掉问号/感叹号。
    • 只有一件事错了,它没有捕捉到第二个正则表达式,因为我仍然可以看到 www 并且它没有在目标空白中打开?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 2013-06-16
    • 2014-09-01
    • 2018-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多