feof — PHP-код, подсчитывающий лишнюю цифру

Я набрал следующий код в PHP, чтобы прочитать текст «yusuf123» из внешнего текстового файла с именем «sample.txt» и посчитать и распечатать общее количество цифр. Код на удивление считает 4 цифры вместо 3.

$file = fopen("sample.txt", "r");
$count = 0 ;
while(!feof($file))
{
$ch = fgetc($file);
if($ch >= '0' && $ch <= '9')
$count++;
}
echo $count ;
fclose($file);

?>

Выход вышеупомянутого кода 4 вместо 3.
Пожалуйста, помогите мне решить это. заранее спасибо

0

Решение

Ты можешь использовать file_get_contents и прочитать весь файл как одну строку и использовать preg_match_all чтобы получить все цифры.

//$str = file_get_contents("sample.txt");
$str = "yusuf123";

preg_match_all("/\d/", $str, $digits);
echo count($digits[0]); // 3

https://3v4l.org/tnaX1

Не уверен, что это решит вашу проблему, так как я не могу проверить файл, который у вас есть, но он работает здесь.
$digits[0] потому что это массив с соответствующими цифрами.

1

Другие решения

Спасибо за вашу оперативную помощь. Я нашел ответ. Я обнаружил, что переменная сохраняет последнее значение при достижении EOF, и оно подсчитывается дважды. Это то, что я сделал, и я нашел ответ.

<?php
$file = fopen("sample.txt", "r");
$count = 0 ;
$ch = fgetc($file);
while(!feof($file))
{
if($ch >= '0' && $ch <= '9')
$count++;
$ch = fgetc($file);
}
echo $count. " ". $ch. "<br>";
fclose($file);
?>
0

По вопросам рекламы [email protected]