我正在寻找使用正则表达式,preg_match()
,preg_split()
或任何其他方式从文本中分割单词的PHP代码。
$textstring="one #two three #four #five";
我需要将#two
,#four
和#five
保存为数组元素。
答案 0 :(得分:1)
试试这个:
$text="one #two three #four #five";
$parts = array_filter(
explode(' ', $text), // split into words
function($word) {
// filter out all that don't start with '#' by keeping all that do
return strpos($word,"#")===0;
// returns true when the word starts with "#", false otherwise
}
);
print_r($parts);
您可以在此处查看:https://3v4l.org/YBnu3
您可能还想阅读array_filter
答案 1 :(得分:0)
在#
符号后面使用否定字符类以获得最高模式效率:
模式:(Demo)
#[^ ]+ #this will match the hashtag then one or more non-space characters.
代码:(Demo)
$in='one #two three #four #five';
var_export(preg_match_all('/#[^ ]+/',$in,$out)?$out[0]:'failed'); // access [0] of result
输出:
array (
0 => '#two',
1 => '#four',
2 => '#five',
)
答案 2 :(得分:-1)
尝试按此分割:\b #
preg_split("/\\b #/", $text)