在PHP中从Twitter提要获取所有哈希标记的最快方法是什么?

时间:2011-09-08 17:36:27

标签: php

这可能是一个简单的问题,但在文本中找到某些单词的最快(更少的执行时间)。

Example: search for all words with hash tag in beginning  of the word

Input:    #google bought #zagat today    
Output:   google zagat

3 个答案:

答案 0 :(得分:4)

/#[^ ]+/

您可以使用preg_match_all

preg_match_all ( '/#[^ ]+/' , $subject, $matches );

答案 1 :(得分:1)

#字符拆分字符串,然后用空格分割。 http://php.net/manual/en/function.explode.php

这是我拼凑的快速解决方案:

  $str = '#google bought #zagat today';

  $a = explode('#', $str);

  foreach ($a as $key=>$value) {
    if($a != "") {
      $b = explode(' ', $value);
      echo $b[0] . " ";
    }
  }

 // output: google zagat

另一种解决方案,使用爆炸一次:

  $str = '#google bought #zagat today';

  foreach (explode(' ', $str) as $key=>$value) {    
    if(substr($value, 0, 1) == '#')
      echo str_replace('#', '', $value) . " ";          
  } 

 // output: google zagat

答案 2 :(得分:0)

这是简单的代码:

$matches = null;
$returnValue = preg_match_all(
  '/#([^\s]+)/i',
  'text#tag ' . PHP_EOL . '#tag5 #tagščřý continue',
  $matches
);
var_dump($matches[1]);

将输出

array
  0 => string 'tag' (length=3)
  1 => string 'tag5' (length=4)
  2 => string 'tagščřý' (length=11)

哈希后的常规匹配(包括数字和unicode字符)。它不区分大小写/i

如果您之前需要空格 - 只需将\s添加到正则表达式'/\s#([^\s]+)/i'输出即可:

array
  0 => string 'tag5' (length=4)
  1 => string 'tagščřý' (length=11)