我对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中完成?
答案 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 修饰符),因此^
代表线的开始。
(占有)向正则表达式引擎指示它不需要通过在量词之后添加+
来回溯。然后子模式变得更有效率。