PHP preg_replace_callback正确转义处理哈希符号('#')


PHP preg_replace_callback correct escaping to handle hash symbol ('#')

我正在做一些工作与Twitter feed,并希望将任何标签转换为可点击的URL。

标签是一个散列符号('#'),后面紧跟着一个作为搜索标签的单词,不包含空格。

一个例子是…

@Eutechnyx looking to form a tech group in #Shoreditch next year. Game and Web programmers get in touch. #AutoClubRev

这里有两个标签,#Shoreditch和#AutoClubRev。

这些应该分别成为以下链接…

https://twitter.com/# !/搜索? q = % 23肖尔迪奇和https://twitter.com/# !/搜索? q = % 23 autoclubrev

我假设我应该在这里使用preg_replace_callback,而不仅仅是香草preg_replace,因为我试图使用反向引用($1)并改变它,而不仅仅是显示它。当然,我也可能是错的。我并不纠结于使用哪个函数——只要它能完成任务并且相对高效。

谢谢,皮特

preg_replace应该能够做到。

$test = "@Eutechnyx looking to form a tech group in #Shoreditch next year. Game and Web programmers get in touch. #AutoClubRev";
echo preg_replace('|#(['w_'d]+)|', '<a href="https://twitter.com/#!/search?q=%23'1">#'1</a>', $test);