我正尝试在 PHP 中执行此操作,我只是想知道,因为我对 Regex 不是很好。
我试图在一个字符串中找到所有主题标签,并将它们包装在一个指向 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
。
关于php - 正则表达式在字符串中查找标签 - 不采用初始标签符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45259988/