Я набрал следующий код в 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.
Пожалуйста, помогите мне решить это. заранее спасибо
Ты можешь использовать 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
Не уверен, что это решит вашу проблему, так как я не могу проверить файл, который у вас есть, но он работает здесь.
$digits[0]
потому что это массив с соответствующими цифрами.
Спасибо за вашу оперативную помощь. Я нашел ответ. Я обнаружил, что переменная сохраняет последнее значение при достижении 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);
?>