如何从Twitter主题标签中删除#?

时间:2012-02-05 22:16:23

标签: php regex

我想从twitter hash-tags中剥离#,所以:

Input: I love #winter and #ice-skating
Output: I love winter and ice-skating

我认为这可以解决问题,但事实并非如此:

$tweet = preg_replace('/#[^\s]*/i', '${1}', $tweet);

有人可以向我解释为什么不呢?我应该改变什么?

3 个答案:

答案 0 :(得分:7)

您需要在括号中包围要捕捉的部分:

$tweet = preg_replace('/#([\w-]+)/i', '$1', $tweet);

查看在线工作:ideone

我还将正则表达式更改为更具体,但是对于更好的正则表达式,我引用了这个问题及其答案(对于.NET,但在PHP中的想法是相同的):

答案 1 :(得分:5)

更快的解决方案:

$tweet = str_replace('#', '', $tweet)

不需要正则表达式

答案 2 :(得分:3)

  1. 你需要有一个子模式来匹配没有井号的字符串
  2. 请勿使用花括号
  3. 1包裹在替换字符串中
    $tweet = preg_replace('/#([^\s]*)/', '$1', $tweet);