我想从twitter hash-tags中剥离#,所以:
Input: I love #winter and #ice-skating
Output: I love winter and ice-skating
我认为这可以解决问题,但事实并非如此:
$tweet = preg_replace('/#[^\s]*/i', '${1}', $tweet);
有人可以向我解释为什么不呢?我应该改变什么?
答案 0 :(得分:7)
您需要在括号中包围要捕捉的部分:
$tweet = preg_replace('/#([\w-]+)/i', '$1', $tweet);
查看在线工作:ideone
我还将正则表达式更改为更具体,但是对于更好的正则表达式,我引用了这个问题及其答案(对于.NET,但在PHP中的想法是相同的):
答案 1 :(得分:5)
更快的解决方案:
$tweet = str_replace('#', '', $tweet)
不需要正则表达式
答案 2 :(得分:3)
1
包裹在替换字符串中
醇>
$tweet = preg_replace('/#([^\s]*)/', '$1', $tweet);