将句子分成单词

Gun*_*uno 1 php text-segmentation

例如我有这样的哨兵:

$text = "word, word w.d. word!..";
Run Code Online (Sandbox Code Playgroud)

我需要这样的数组

Array
(
    [0] => word
    [1] => word
    [2] => w.d
    [3] => word".
)
Run Code Online (Sandbox Code Playgroud)

我是新来的正则表达式。

这是我尝试过的:

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

这个

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

的作品,但我有第二个问题,我想在mu常规表达式中写列表“ wd”是特例。.例如,这句话是我的列表“ wd”,“ mr。”,“ dr。”

如果我要输入文字:

$ text =“单词,单词博士wd word!..”;

我需要数组:

Array (
  [0] => word
  [1] => dr.
  [2] => word
  [3] => w.d
  [4] => word 
)
Run Code Online (Sandbox Code Playgroud)

对不起,英语不好。

h2o*_*ooo 6

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);
?>
Run Code Online (Sandbox Code Playgroud)

演示

输出:

Array
(
    [0] => word
    [1] => word
    [2] => w.d
    [3] => word
)
Run Code Online (Sandbox Code Playgroud)


Fra*_*ank 5

使用爆炸功能,将字符串拆分为一个数组

$words = explode(" ", $text);
Run Code Online (Sandbox Code Playgroud)

  • 看来他想忽略单词结尾处的句点/标点。 (2认同)