我对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中完成?

最佳答案

您可以这样做:

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

(可能)向正则表达式引擎表示不需要在量词后添加+来回溯。子模式将变得更加有效。

关于php - 将JS Regex转换为PHP Regex,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16995560/

10-11 22:36
查看更多