提问人:Yusuf M 提问时间:4/23/2018 更新时间:4/23/2018 访问量:68
PHP码计数额外数字
PHP Code Counting Extra Digit
问:
我在PHP中键入了以下代码,以从名为“sample.txt”的外部文本文件中读取文本“yusuf123”,并计算和打印总位数。令人惊讶的是,代码是 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。 请帮我解决这个问题。提前致谢
答:
1赞
Andreas
4/23/2018
#1
您可以使用 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]
0赞
Yusuf M
4/23/2018
#2
感谢您的及时帮助。我找到了答案。我发现当达到 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);
?>
评论
is_numeric($ch)
($ch >= '0') && ($ch <= '9')
print (integer)$offset++ . " " . ord($ch) . "\n";