我正在尝试在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
值,$1
hashtag
值 - 不带#符号。
在此处测试(选择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
。