0

Twitter のリンクを解析するために作成したこの関数を改善するには、助けが必要です。ハッシュタグと @reply のリンクを作成します。問題は、ハッシュタグまたは @reply の末尾にスペースのない句読点がある場合、HREF URL に追加されることです。

たとえば、「#pizza と #pop が本当に好き」とツイートした場合、#pizza のリンクはカンマが含まれているため間違っています。

私は正規表現があまり得意ではありません。これを機能させるだけでしばらく時間がかかりました。

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;

}

4

1 に答える 1

2

必要なことを行うためのコードの最も簡単な変更:

$description = preg_replace("#(^|[\n ])\#(\w+)#ise", "'\\1<a href=\"".$pre."/hash/\\2\" rel=\"nofollow\" class=\"hash ".$colour."\">#\\2</a>'", $description);
于 2009-08-12T11:53:12.860 に答える