将JS Regex转换为PHP Regex

时间:2013-06-08 02:53:25

标签: php javascript regex

我对Regex的理解不是很好,我需要调整我的工作JS代码到PHP。

这是JavaScript中的一个演练(它找到了主题标签,并从中制作了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中完成?

1 个答案:

答案 0 :(得分: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 修饰符),因此^代表线的开始。

(占有)向正则表达式引擎指示它不需要通过在量词之后添加+来回溯。然后子模式变得更有效率。