2010-04-12 195 views

回答

10

您可以读取该文件到像这样的字符串:

$data = file_get_contents("/tmp/some_file.txt"); 

您可以在类似于单个字节获得如何在C会:

for($i = 0; $i < strlen($data); ++$i) { 
    $char = $data[$i]; 
    echo "Byte $i: $char\n"; 
} 

参考文献:

+1

我觉得这是一个错字。它必须是: '$ char = $ data [$ i];' – 2012-07-12 11:43:29

4

PHP Manual on String access and modification by character

字符中字符串s,可以访问和修改在使用方形数组括号的字符串之后指定所需字符的从零开始的偏移量,如$str[42]中所示。出于此目的,可以将字符串视为一组字符。当您想要提取或替换多于一个字符时,可以使用功能substr()substr_replace()

或者,如果你正在寻求从文件中读取字节后,您可以使用一个SplFileObject

$file = new SplFileObject('file.txt'); 
while (false !== ($char = $file->fgetc())) { 
    echo "$char\n"; 
} 

这不是一个字节数组,虽然,但遍历文件句柄。 SplFileInfo实现了SeekableIterator接口。

而且在阿里纳斯,还有

  • file - 返回文件中的数组。数组中的每个元素都对应于文件中的一行,并且还附加了换行符。失败时,file()返回FALSE。
2

太多PHP>

$data = file_get_contents("/tmp/some_file.txt");

最好使的方式(不推荐在使用计数,的sizeof,strlen的或其他功能): $counter = strlen($data); for($i = 0; $i < $counter; ++$i) { $char = data[$i]; echo "Byte $i: $char\n"; }

+0

毫无意义的微优化。你的回答也应该在答案下面加以评论。 – Gordon 2010-04-12 07:15:38

+0

在所有的微观优化中,如果有的话,这个是最没有意义的。 – raveren 2010-04-12 08:13:24

+0

是的。但在zend证明非常频繁。 – Mantas 2010-04-12 09:15:24