将JS正则表达式转换为PHP正则表达式


Convert JS Regex to PHP Regex

我对Regex的理解不是很好,我需要将我的工作JS代码适应PHP。

这是JavaScript中的一个run-through(它查找hashtag并从中生成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中完成?

你可以这样做:

$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修饰符),因此^表示行开始。

(所有格)向regex引擎表明,它不需要在量词后添加+来回溯。子模式变得更加高效。