PHP: fgets() i UTF-8

Ostatnio napotkałem dziwny problem przy odczycie pierwszej linii pliku tekstowego zakodowanego w UTF-8. Co się okazało? Otóż pierwszą linię przy takim kodowniu poprzedzają 3 bajty (tzw. BOM – byte order mark). Nie wiem do końca czy zawsze tak jest, ale trzeba się na to uczulić.

Mała poprawka przy używaniu funkcji fgets():

$h = fopen($file, 'r');
$i = 0;
while($linia = fgets($h)) {
	if($i++ == 0) {
		$linia = mb_substr($linia, 3);
	}
	// ...
}
fclose($h);

Więcej na ten temat tutaj.

Leave a Reply

Your email address will not be published. Required fields are marked *