2011-12-21 13 views
0

私はTwitterフィードでいくつかの作業をしており、ハッシュタグを明確なURLに変換したいと考えています。PHP preg_replace_callbackハッシュ記号( '#')を処理するための正しいエスケープ

ハッシュタグは、ハッシュ記号( '#')の直後に検索タグとして機能する単語で、スペースは含まれません。

の例では、ここでは2個のタグ、#Shoreditchと#AutoClubRevがあります...

@Eutechnyx looking to form a tech group in #Shoreditch next year. Game and Web programmers get in touch. #AutoClubRev 

だろう。

これらはそれぞれ、私が取るしようとしているように私は、私はちょうどバニラにpreg_replaceここではなくpreg_replace_callbackを使用する必要があると仮定してい

https://twitter.com/#!/search?q=%23Shoreditchhttps://twitter.com/#!/search?q=%23AutoClubRev

...以下のリンクになるべき逆参照($ 1)し、それを表示するだけではなく変更します。もちろん私は間違っている可能性があります。私は仕事をしていて、比較的効率的である限り、どの機能を使うべきだと思っていません。

おかげで、 ピート

答えて

1

preg_replaceはそれを行うことができるはずです。

$test = "@Eutechnyx looking to form a tech group in #Shoreditch next year. Game and Web programmers get in touch. #AutoClubRev"; 

echo preg_replace('|#([\w_\d]+)|', '<a href="https://twitter.com/#!/search?q=%23\1">#\1</a>', $test); 
+0

ありがとうございます.RageZさん、ありがとうございます。ハッシュタグ自体からのハッシュは、エスケープされた文字セット '%23'に変換する必要があります。これをhtmlentitiesなどで囲むことは、メッセージが意味をなさせるために実際に必要とされる他の特殊文字のために物を壊すようです。だから私は実際には逆参照を操作する必要があり、そのまま表示するのではありません。乾杯。 Pete –

+0

@PeterGross:ブラウザがあなたのために文字を変換してしまったことに注意してください。 – RageZ

+0

かなりスティルではありません。後方参照\ 1にはハッシュタグが含まれています。これはそれを置き換えるものではなく、%23または別のハッシュをその前に追加します。私はそれを交換する必要があります。助けてくれてありがとう。 –

関連する問題