我对正则表达式的理解不是很好,我需要将我的工作 JS 代码调整为 PHP。
这是 JavaScript 中的运行过程之一(它查找主题标签并从中创建 HTML anchor 标记):
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 正则表达式转换为 PHP 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16995560/