我对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引擎表明,它不需要在量词后添加+
来回溯。子模式变得更加高效。