无法读取字符串

时间:2016-12-16 14:32:50

标签: php string

此代码有什么问题。我想在不使用任何内置函数的情况下读取空格的数量,但它不会返回或读取空格:

$string = "can you look into this??";
$i = 0;
$breakPoints = 0;

while ($string[$i] != '' & $string[$i + 1] != '') {
    if ($string[$i] == "" || empty($string[$i])) {
        die("cdsd");
        $breakposition = $string[$i];
        $breakPoints++;
    } else {
        print_r($string[$i]);
    }
    $i++;
} 

echo($breakPoints);

它始终进入else部分,永远不会进入if声明。我甚至尝试使用isset(),但这也没有用。我在哪里弄错了?

3 个答案:

答案 0 :(得分:3)

在字符串偏移isset()时循环,并检查它是否等于空格。无需对$i+1执行任何操作:

$string = "can you look into this??";
$i = 0;
$breakPoints = 0;

while (isset($string[$i])) {
    if ($string[$i] == " ") {
        $breakposition = $string[$i];
        $breakPoints++;
    } else {
        print_r($string[$i]);
    }
    $i++;
} 
echo($breakPoints);

输出:

canyoulookintothis??4

答案 1 :(得分:0)

一旦你的代码正确,你将总是遇到一个字符串索引错误,你需要在执行操作之前检查内置的isset()函数。 换句话说,索引的i最终将指向字符串的最后一个字母,这将导致PHP错误。您可以使用isset()来检查它并突破循环。示例:

$string = "can you look into this??";
$i = 0;
$breakPoints = 0;

while (isset($string[$i])) {
    if ($string[$i] == " ") {
        $breakPoints++;
    } else {
        if($string[$i] != ''){
           print_r($string[$i]);
        }
    }
    $i++;
}
echo("<br />Number of spaces: ".$breakPoints

答案 2 :(得分:-1)

空格不是空的,它会增加大小。 所以使用这个

$string = "can you look into this??";
$i = 0;
$breakPoints = 0;

while ($string[$i] != '' & $string[$i + 1] != '') {

    if ($string[$i] == " ") {
        echo " ";
        $breakposition = $string[$i];
        $breakPoints++;
    } else {
        print_r($string[$i]);
    }       
    $i++;
} 

echo($breakPoints);

DEMO

或尝试此代码,

使用preg_match_all

$matches = " ";
$numSpaces = preg_match_all('/[ ]/', $string , $matches);

或使用此::

substr_count($string , ' ');