コードを Web サイトに配置するときに、すべての@と#をリンクに変換しようとしています。
@と#を検索するために正規表現を使用しているように見えるいくつかの Jquery コードを見つけましたが、PHP を使用して同じことを達成する方法がわかりません。
コードは次のとおりです。
at: function(tweet) {
return tweet.replace(/\B[@@]([a-zA-Z0-9_]{1,20})/g, function(m, username) {
return '<a target="_blank" class="twtr-atreply" href="http://twitter.com/intent/user?screen_name=' + username + '">@' + username + '</a>';
});
},
hash: function(tweet) {
return tweet.replace(/(^|\s+)#(\w+)/gi, function(m, before, hash) {
return before + '<a target="_blank" class="twtr-hashtag" href="http://twitter.com/search?q=%23' + hash + '">#' + hash + '</a>';
});
},
だから私はこのようなものを持っていた場合:
@BobBarker is going to #blahblah and also @BillyBob
検索して次のことを行う必要があります。
<a target="_blank"
class="twtr-atreply"
href="http://twitter.com/intent/user?screen_name=BobBarker'">@BobBarker
</a>
<a target="_blank"
class="twtr-atreply"
href="http://twitter.com/intent/user?screen_name=BillyBob'">@BillyBob
</a>
ハッシュタグも同様:
#blahblah
検索して次のことを行う必要があります。
<a target="_blank"
class="twtr-hashtag"
href="http://twitter.com/search?q=%23blahblah">#blahblah
</a>
どんな助けでも素晴らしいでしょう!
アップデート
私は、 @または#の最初の瞬間を見つけるのにうまく機能するが、ループし続けない PHP をいくつかまとめました。ループを設定するにはどうすればよいですか?
$theTweet = "@BobBarker is going to #blahblah and also @BillyBob";
if (preg_match("/\B[@@]([a-zA-Z0-9_]{1,20})/", $theTweet, $matches)) {
$theTweet = str_replace($matches[0],'<a target="_blank" class="twtr-atreply" href="http://twitter.com/intent/user?screen_name=' . trim($matches[0]) . '"> ' . trim($matches[0]) . '</a> ',$theTweet);
echo $theTweet . '<br />';
}
if (preg_match("/(^|\s+)#(\w+)/", $theTweet, $matches)) {
$theTweet = str_replace($matches[0],'<a target="_blank" class="twtr-hashtag" href="http://twitter.com/search?q=%23' . trim($matches[0]) . '"> ' . trim($matches[0]) . '</a> ',$theTweet);
echo $theTweet;
}
アップデート #2
私自身の質問に答えました:o)