将句子分成单词

时间:2013-08-08 18:54:06

标签: php text-segmentation

例如我有这样的sentenes:

$text = "word, word w.d. word!..";

我需要像这样的数组

Array
(
    [0] => word
    [1] => word
    [2] => w.d
    [3] => word".
)

我是正常表达的新手..

以下是我的尝试:

function divide_a_sentence_into_words($text){ 
    return preg_split('/(?<=[\s])(?<!f\s)\s+/ix', $text, -1, PREG_SPLIT_NO_EMPTY); 
}

$text = "word word, w.d. word!..";
$split = preg_split("/[^\w]*([\s]+[^\w]*|$)/", $text, -1, PREG_SPLIT_NO_EMPTY);
print_r($split);

有效,但我有第二个问题,我想写mu常规表达列表 “w.d”是特例。例如,这个词是我的名单“w.d”,“先生。”,“博士”。

如果我要采取文字:

$ text =“word,dr。word w.d. word!..”;

我需要数组:

Array (
  [0] => word
  [1] => dr.
  [2] => word
  [3] => w.d
  [4] => word 
)
抱歉英语不好......

3 个答案:

答案 0 :(得分:4)

使用explode函数,将字符串拆分为数组

$words = explode(" ", $text);

答案 1 :(得分:4)

preg_split与正则表达式/[^\w]*([\s]+[^\w]*|$)/一起使用应该可以正常工作:

<?php
    $text = "word word w.d. word!..";
    $split = preg_split("/[^\w]*([\s]+[^\w]*|$)/", $text, -1, PREG_SPLIT_NO_EMPTY);
    print_r($split);
?>

DEMO

输出:

Array
(
    [0] => word
    [1] => word
    [2] => w.d
    [3] => word
)

答案 2 :(得分:3)

使用

str_word_count ( string $string [, int $format = 0 [, string $charlist ]] )

点击此处http://php.net/manual/en/function.str-word-count.php 它完全符合你的要求。所以在你的情况下:

$myarray = str_word_count ($text,1);