2009-08-12 6 views
0

この機能を改善するための助けが必要です。Twitterのリンクを解析するために作成しました。ハッシュタグと@replyのリンクを作成します。すべて問題なく動作しますが、ハッシュタグや@replyの末尾にスペースがない句読点文字がある場合は、HREF URLに追加されます。preg_replaceのヘルプ、アルファ以外の数字で停止

たとえば、「私は本当に#pizzaと#popが好き」とTweetedした場合、#pizzaのリンクはコンマが付いているため間違っています。

私はRegexにはあまりよくありませんが、これはちょうどこの作業をするために私をかかったので、どんな助けも素晴らしいでしょう!あなたがやりたいようにコードの

function parse_tweet($description, $colour='', $external=false) { 
if ($external == true) $pre = 'http://politwitter.ca'; else $pre = ''; 
$description = preg_replace("/(http:\/\/[^\s]+)/", "<a href=\"$1\" target=\"_blank\">$1</a>", $description); 
$description = preg_replace("#(^|[\n ])((www|ftp)\.[^ \"\t\n\r<]*)#ise", "'\\1<a href=\"http://\\2\" target=\"_blank\">\\2</a>'", $description); 
$description = preg_replace("#(^|[\n ])@([^ \"\t\n\r<]*)#ise", "'\\1<a href=\"".$pre."/user/\\2\" rel=\"nofollow\">@\\2</a>'", $description); 
$description = preg_replace("#(^|[\n ])\#([^ \"\t\n\r<]*)#ise", "'\\1<a href=\"".$pre."/hash/\\2\" rel=\"nofollow\" class=\"hash ".$colour."\">#\\2</a>'", $description); 
return $description; 

}

答えて

2

最も簡単な修正:

$description = preg_replace("#(^|[\n ])\#(\w+)#ise", "'\\1<a href=\"".$pre."/hash/\\2\" rel=\"nofollow\" class=\"hash ".$colour."\">#\\2</a>'", $description); 
+0

は素晴らしい作品という、そんなにありがとう!私は上記の行のルールに同じ変更を加えました。 – Canadaka

関連する問題