正则表达式跳过第一场比赛?

时间:2014-12-30 17:31:46

标签: regex

我正在尝试在文本中匹配每个简单的“类似Twitter的主题标签”,并制作它们的超链接。

我已经取得了一些成功,但奇怪的是,当字符串以#符号开头(其余部分正确匹配)时,我的正则表达式/(^|\s)#(\w*[a-zA-Z_]+\w*)/正在跳过第一种情况。如果我之前写了任何其他内容,那么第一个案例就是正确匹配的。只有当#符号出现在字符串的第一个字符时才会失败。

你知道为什么会这样吗?

function make_hashes_into_twitter_hashtag_urls($content){

           $content = preg_replace('/(^|\s)#(\w*[a-zA-Z_]+\w*)/', '<a href="http://twitter.com/hashtag/\2?src=hash" target="_blank"><span class="color_my_hash">\1#</span>\2</a> ', $content);

           echo $content;

}
add_filter('the_content','make_hashes_into_twitter_hashtag_urls');

谢谢,

1 个答案:

答案 0 :(得分:0)

the_content();模板标记输出HTML和文本,以及HTML and regular expressions don't play nice together

我不知道为什么像<p>#这样(the_content();输出的是什么)的详细信息正在使我的正则表达式失败。

我很想知道为什么以及我的正则表达式应该如何 - 避免陷入困境(即使如上所述,也不建议混合使用正则表达式和HTML)。

我的问题主要得到解答,但是如何破解/解决这种情况的任何其他细节将非常感激!