Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php preg_split返回一个非预期的数字_Php_Preg Split - Fatal编程技术网

Php preg_split返回一个非预期的数字

Php preg_split返回一个非预期的数字,php,preg-split,Php,Preg Split,我的第一个问题,所以请耐心等待我 我有这个字符串: “创建一个脚本,该脚本将获取字符串并对其进行分析以生成 以下统计数据:辣味墨西哥胡椒培根益普生多洛尔·埃米特·凯文 水牛法兰克福香肠肉干猪肉肚培根多纳香肠 恶魔岛短腰肉,鸡腿火腿嫩腰肉小腿短肉 肉丸下颚里贝耶磨圆里贝耶猪里脊, 比尔顿肩短肋舌球尖鸡腿磨圆 臀部猪排,Kielbasa培根牛排,安杜尔火腿短排骨 短腰肉鹿肉法兰克福排骨腌牛肉。” 我使用了这个函数: $sentenceArray = preg_split('/[.]+/', $st

我的第一个问题,所以请耐心等待我

我有这个字符串:

“创建一个脚本,该脚本将获取字符串并对其进行分析以生成 以下统计数据:辣味墨西哥胡椒培根益普生多洛尔·埃米特·凯文 水牛法兰克福香肠肉干猪肉肚培根多纳香肠 恶魔岛短腰肉,鸡腿火腿嫩腰肉小腿短肉 肉丸下颚里贝耶磨圆里贝耶猪里脊, 比尔顿肩短肋舌球尖鸡腿磨圆 臀部猪排,Kielbasa培根牛排,安杜尔火腿短排骨 短腰肉鹿肉法兰克福排骨腌牛肉。”

我使用了这个函数:


$sentenceArray = preg_split('/[.]+/', $string);

foreach ($sentenceArray as $sentence) {
    $numberOfWords = str_word_count($sentence);
    echo '<br>' . $numberOfWords . '<br>';
}
我期待着16、14、16、18、17,但我不明白0是从哪里来的?!
非常感谢

实际上,您需要排除最后一个不包含任何内容的字符串,这就是它返回0个单词的原因。您可以使用以下代码

<?php
$string = "Create a script which will take a string and analyse it to produce the following stats. Spicy jalapeno bacon ipsum dolor amet kevin buffalo frankfurter, sausage jerky pork belly bacon. Doner sausage alcatra short loin, drumstick ham tenderloin shank bresaola porchetta meatball jowl ribeye ground round. Ribeye pork loin filet mignon, biltong shoulder short ribs tongue ball tip drumstick ground round rump pork chop. Kielbasa bacon strip steak andouille ham short ribs short loin venison frankfurter spare ribs doner corned beef.";
$sentenceArray = explode(".", $string);
foreach ($sentenceArray as $sentence)
{
    if ($sentence != "")
    {
        $numberOfWords = str_word_count($sentence);
        echo '<br>' . trim($numberOfWords) . '<br>';
    }
}
?>

实际上,您需要排除最后一个不包含任何内容的字符串,这就是它返回0个单词的原因。您可以使用以下代码

<?php
$string = "Create a script which will take a string and analyse it to produce the following stats. Spicy jalapeno bacon ipsum dolor amet kevin buffalo frankfurter, sausage jerky pork belly bacon. Doner sausage alcatra short loin, drumstick ham tenderloin shank bresaola porchetta meatball jowl ribeye ground round. Ribeye pork loin filet mignon, biltong shoulder short ribs tongue ball tip drumstick ground round rump pork chop. Kielbasa bacon strip steak andouille ham short ribs short loin venison frankfurter spare ribs doner corned beef.";
$sentenceArray = explode(".", $string);
foreach ($sentenceArray as $sentence)
{
    if ($sentence != "")
    {
        $numberOfWords = str_word_count($sentence);
        echo '<br>' . trim($numberOfWords) . '<br>';
    }
}
?>

发生这种情况是因为输入字符串以一个点结束,
preg\u split
也将在该点处拆分,并生成后面的字符串作为拆分,即空字符串

改用
preg\u match\u all
。此函数将结果数组作为参数而不是返回值,并且该数组将被包装。我们也要这样做:

preg_match_all('/[^.]+/', $string, $sentenceArray);
foreach ($sentenceArray[0] as $sentence) {
    $numberOfWords = str_word_count($sentence);
    echo '<br>' . $numberOfWords . '<br>';
}
preg_match_all('/[^.]+/',$string,$sentenceArray);
foreach($sentenceArray[0]作为$句子){
$numberOfWords=str\u word\u count($句子);
回显“
”.$numberOfWords.“
”; }
发生这种情况是因为输入字符串以一个点结束,
preg\u split
也将在该点处拆分,并生成后面的字符串作为拆分,即空字符串

改用
preg\u match\u all
。此函数将结果数组作为参数而不是返回值,并且该数组将被包装。我们也要这样做:

preg_match_all('/[^.]+/', $string, $sentenceArray);
foreach ($sentenceArray[0] as $sentence) {
    $numberOfWords = str_word_count($sentence);
    echo '<br>' . $numberOfWords . '<br>';
}
preg_match_all('/[^.]+/',$string,$sentenceArray);
foreach($sentenceArray[0]作为$句子){
$numberOfWords=str\u word\u count($句子);
回显“
”.$numberOfWords.“
”; }
只需从该句子中删除最后一个点。

只需从该句子中删除最后一个点。

preg_split()
在句号上进行拆分,包括最后一个句号,这将导致在数组中返回空字符串

有一个标志可用于删除空元素

$sentenceArray = preg_split('/[.]+/', $string, -1, PREG_SPLIT_NO_EMPTY);
有关更多详细信息,请参见

preg_split()
在句号上进行拆分,包括最后一个句号,这将导致在数组中返回空字符串

有一个标志可用于删除空元素

$sentenceArray = preg_split('/[.]+/', $string, -1, PREG_SPLIT_NO_EMPTY);

有关更多详细信息,请参见

欢迎使用堆栈溢出。请学习如何使用堆栈溢出,并阅读如何提高问题的质量。然后你的问题包括完整的源代码,你有作为一个,这可以由其他人测试。欢迎堆栈溢出。请学习如何使用堆栈溢出,并阅读如何提高问题的质量。然后,你的问题包括完整的源代码,你有作为一个,这可以由别人测试。