0

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

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

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

于 2013-06-08T03:07:12.040 回答