php是用1-3个单词来分解句子的简单方法吗?

php是用1-3个单词来分解句子的简单方法吗?,php,explode,Php,Explode,php是用1-3个单词来分解句子的简单方法吗 $str = 'Wikipedia was launched on January 15, 2001.'; $str = preg_replace('/[[:punct:]]/i',' ',$str); $parts = explode(' ',trim($str)); 现在我想说出这样的话。谢谢 $output_array={ "Wikipedia", "was", "launched", "on", "January", "15", "2001

php是用1-3个单词来分解句子的简单方法吗

$str = 'Wikipedia was launched on January 15, 2001.';
$str = preg_replace('/[[:punct:]]/i',' ',$str);
$parts = explode(' ',trim($str));
现在我想说出这样的话。谢谢

$output_array={
"Wikipedia",
"was",
"launched",
"on",
"January",
"15",
"2001", //one word
"Wikipedia was",
"launched on",
"January 15",
"was launched",
"on January",
"15 2001", //two nearby words.
"Wikipedia was launched",
"on January 15",
"was launched on",
"January 15 2001",
"launched on January",
"on January 15" //three nearby words.
}
$parts=explode('',preg_replace('/[:punct:]]/i','','',$str));
$output_array=array();

对于($words=1;$words Hmmm…看起来你正在尝试建立自己的全文索引。在我看来,到目前为止你做得很好。我想你必须重新运行数组$parts,跳过3个元素来创建一个新字符串。我不知道是否还有其他方法。也许正则表达式可能有一些解决方案,但我不太确定。set
$max=3;
仅获取
array(1){[0]=>string(9)“Wikipedia”}
您还可以直接获取包含
preg\u split('/\W+/',$str,-1,preg\u split\u NO\u EMPTY);
是的,这是替换explode/preg\u replace:)的建议)
$parts = explode(' ',preg_replace('/[[:punct:]]/i','',$str));
$output_array = array();
for ($words = 1; $words <= $max; $words++)
    for ($wordIndex = 0; $wordIndex <= count($parts) - $words; $wordIndex++)
        $output_array[] = implode(" ", array_slice($parts, $wordIndex, $words));