这可能是一个简单的问题,但在文本中找到某些单词的最快(更少的执行时间)。
Example: search for all words with hash tag in beginning of the word
Input: #google bought #zagat today
Output: google zagat
答案 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)