正则表达式在字符串中查找主题标签 - 无需采用初始主题标签符号



我正在尝试在PHP中执行此操作,我只是想知道,因为我对正则表达式不是很好。

我正在尝试在一个字符串中找到所有主题标签,并将它们包装在指向 Twitter 的链接中。为此,我需要主题标签的内容,而不是符号。

我想选择#hashtag- 没有前面的#=> 只是为了返回hashtag

我想在一行中完成,但我正在做一个preg_replace,然后是字符串替换,如下所示:

$string = preg_replace('/B#([a-z0-9_-]+)/i', '<a 
href="https://twitter.com/hashtag/$0" target="_blank">$0</a> ', $string);
$string = str_replace('https://twitter.com/hashtag/#', 'https://twitter.com/hashtag/', $string);

任何指导都值得赞赏!

我正在使用正则表达式测试器并找到了答案。

preg_replace返回两个值,一个值$0#hashtag值,$1hashtag值 - 不带#符号。

在此处测试(选择preg_replace(: http://www.phpliveregex.com/p/kOn

也许这与我不确定的正则表达式本身有关。希望这也对其他人有所帮助。

我的一个衬里是:

$string = preg_replace('/B#([a-z0-9_-]+)/i', '<a href="https://twitter.com/hashtag/$1" target="_blank">$0</a> ', $string);

编辑:我现在明白了。方括号周围添加的括号( )有效地返回$1变量。否则,整个模式$0

最新更新