2010-04-12 124 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