こんにちは、私は以下のコードを使って最新のつぶやきを表示しようとしています。このpreg_replaceはtwitter @usernamesのリンクをラップするのには効果的ですが、つぶやきのWebアドレスでは機能しません。つぶやきのURLの周りにこのコードをラップするにはどうすればいいですか?助けのためのつぶやきのリンクをリンクしたリンクがあります。preg_replace
<?php
/** Script to pull in the latest tweet */
$username='fairgroceruk';
$format = 'json';
$tweet = json_decode(file_get_contents("http://api.twitter.com/1/statuses/user_timeline/{$username}.{$format}"));
$latestTweet = htmlentities($tweet[0]->text, ENT_QUOTES);
$latestTweet = preg_replace('/@([a-z0-9_]+)/i', '<a href="http://twitter.com/$1" target="_blank">@$1</a>', $latestTweet);
$latestTweet = preg_replace('/http://([a-z0-9_]+)/i', '<a href="http://$1" target="_blank">http://$1</a>', $latestTweet); echo $latestTweet;
?>
おかげで、
ベン
これらまあ、それはそれは動作しません "とは対照的に、何それは動作しません知って、常に便利です –
...動作するようには思えません。私はちょうど最初のものをテストし、元の正規表現が実際に壊れていることに気付きました - エスケープのためではなく、より多くの文字がURLにある方法があるからです。 []ビットは最低限必要です:([a-z0-9 _ \。\ - \ + \&\!\#\〜\、] +) - これは、彼らの良いサブセット。 – Arantor
申し訳ありませんが説明するのは難しいですが、問題は、最初のpreg_replaceが2回エスケープされ、2番目のpreg_replaceによって混乱を招くことになる場合は、URLに@twitterUsernameがあると思われます。 –