0

私の Regex の理解はあまりよくなく、作業中の JS コードを PHP に適合させる必要があります。

これは JavaScript のランスルーの 1 つです (ハッシュタグを見つけて、それらから HTML アンカー タグを作成します)。

exp = /(^|\s)#(\w+)/g;
messagetext = messagetext.replace(exp, "$1<a class='myHashtag' href='http://search.twitter.com/search?q=%23$2' target='_blank'>#$2</a>");

これはPHPでどのように行われますか?

4

1 に答える 1

3

次のように実行できます。

$messagetext = preg_replace('~^\h*+#\K\w++~m',
  '<a class="myHashtag" '
 .'href="http://search.twitter.com/search?q=%23$0" target="_blank">#$0</a>',
  $messagetext);

パターン詳細:

^       # line's begining
\h*+    # horizontal space (ie space or tab), zero or more times (possessive)
#       # literal #
\K      # forgets all the begining!
\w++    # [a-zA-Z0-9_] one or more times (possessive)

区切り~文字はありますが、他の文字を選択できます。

私は複数行モード( m修飾子)を使用して^いるため、行の開始を表します。

(possessive)+は、量指定子の後に aを追加してバックトラックする必要がないことを正規表現エンジンに示します。サブパターンはより効率的になります。

于 2013-06-08T03:07:12.040 に答える