PHP我的正则表达不能找到第一个Hashtags

时间:2016-09-09 13:17:20

标签: php string

我尝试在我的字符串中获取所有主题标签并且工作正常但是第一个主题标签我的代码找不到它:

$string = '#q #q #q #q #q #q #q #q #q #q #q #q #q #q #q';

$hashtag_url = $weburl. "hashtag/\\0";
$string = preg_replace("(\s#\w+)", "<a href='$hashtag_url'>\\0</a>", $string);

见图片(所有标签都没问题,只有第一个没有):

http://i.stack.imgur.com/v5buk.png

我需要示例,如果我的链接有我不想在链接中找到主题标签:

http://localhost/#gasd3 #qtest (get only #qtest)

2 个答案:

答案 0 :(得分:1)

第一个#标签前没有空格...试试这个:

 preg_replace("/(\s*#\w+)/i", "<a href='$hashtag_url'>\\0</a>", $string);

星号表示该空间可能存在零次或多次。

答案 1 :(得分:1)

你可能想要像这样选择..

$string = preg_replace("((\s)?#\w+)", "<a href='$hashtag_url'>\\0</a>", $string);

当(\ s)在括号中后跟?时,更容易理解?这是一个修饰符,告诉正则表达式(\ s)是可选的。

你可以这样做,没有括号,这看起来更麻烦,但对正则表达式引擎更好。

$string = preg_replace("(\s?#\w+)", "<a href='$hashtag_url'>\\0</a>", $string);