0

テキスト内の @ で始まるすべての単語を、その Twitter アカウントへの対応するリンクに置き換える必要があります。現在、私は次のようなものを使用しています:

$tweet_text = preg_replace('/(@\w+)/', '<a href=\'#\'>\1</a>', $string);

それは機能しますが、リンクはどこにも行きません。strpos() と substr() の組み合わせを使用して実際の単語を取得し、その Twitter アカウントにリンクできるようにすることにしましたが、より良い解決策があるかどうか疑問に思っていました。何か案は?

例:

交換前:

'Imperfection is the new perfection... RT @xHausOfCandy: @katyperry i think your bottom teeth and your wonk eye make you even more adorable.'

交換後:

'Imperfection is the new perfection... RT <a href=''#''>@xHausOfCandy</a>: <a href=''#''>@katyperry</a> i think your bottom teeth and your wonk eye make you even more adorable.'

希望:

'Imperfection is the new perfection... RT <a href=''http://twitter.com/xHausOfCandy''>@xHausOfCandy</a>: <a href=''http://twitter.com/katyperry''>@katyperry</a> i think your bottom teeth and your wonk eye make you even more adorable.'

それが今より明確になることを願っています!

4

3 に答える 3

4

独自のキャプチャ グループに名前を付け、置換で参照するときに \2 を使用します。

$tweet_text = preg_replace('/(@(\w+))/', '<a href="http://twitter.com/\2">\1</a>', $string);
于 2012-06-02T16:55:55.207 に答える
1

twitter-textライブラリを使用できます

于 2012-06-02T16:51:16.317 に答える
1
$string = 'Imperfection is the new perfection... RT @xHausOfCandy: @katyperry i think your bottom teeth and your wonk eye make you even more adorable.';
$tweet_text = preg_replace('/@(\w+)/', '<a href="http://twitter.com/#\1">@\1</a>', $string);
于 2012-06-02T17:00:02.813 に答える