我正在尝试用PHP做这个,我只是想知道我对Regex并不好.
我正在尝试查找字符串中的所有主题标签,并将它们包装在twitter的链接中.为了做到这一点,我需要标签的内容,没有符号.
我想选择#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返回两个值,一个带有#hashtag值的$0和带有#标签值的$1 – 没有#符号.
在这里测试(选择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.