在twitter Feed中用url替换文本

时间:2014-02-07 08:24:14

标签: preg-replace twitter-feed

我有这段代码:

public function linkify($status_text)
    {
      $status_text = preg_replace('/(https?:\/\/\S+)/','<a href="\1">\1</a>', $status_text);
      $status_text = preg_replace('/(^|\s)@(\w+)/','\1<a href="http://twitter.com/\2">@\2</a>',$status_text);
      $status_text = preg_replace('/(^|\s)#(\w+)/','\1#<a href="http://search.twitter.com/search?q=%23\2">\2</a>',$status_text);
      return $status_text;
    }  

并显示来自Twitter的Feed

        foreach($feed as $feed_item) {
            $html .= '<li>';
            $html .= '' . $this->linkify($feed_item->text) . '';
            $html .= '' . $this->relativedate((strtotime($feed_item->created_at))) . '';
            $html .= '</li>';
        }
        echo $html;

此代码的结果是

<li>Twitter Feed Text <a href="http://t.co/TnkNfxCdRu">http://t.co/TnkNfxCdRu</a></li>

如果有人可以帮助我,我怎样才能在标记<a></a>中添加文字。例如,完全是这样的:

<li><a href="http://t.co/TnkNfxCdRu">Twitter Feed Text</a></li>

非常感谢

1 个答案:

答案 0 :(得分:1)

只需将您的第一个preg_replace更改为:

  $status_text = preg_replace('~(https?://(\S+))~','<a href="$1">$2</a>',$status_text);