Rumah >pembangunan bahagian belakang >masalah PHP >php membaca teks bercelaru
Semasa proses pembangunan PHP, anda mungkin menghadapi aksara bercelaru semasa membaca fail teks, yang sangat memudaratkan operasi biasa program. Artikel ini akan memperkenalkan beberapa kemungkinan penyebab watak bercelaru dan menyediakan beberapa penyelesaian.
Fail teks menyokong berbilang format pengekodan, termasuk UTF-8, GBK, GB2312, dsb. Jika format pengekodan PHP tidak sepadan dengan format pengekodan yang digunakan dalam fail semasa membaca fail teks, aksara bercelaru akan terhasil.
Dalam PHP, anda boleh menggunakan fungsi mb_detect_encoding() untuk mengesan format pengekodan fail, dan kemudian gunakan fungsi iconv() untuk menukar. Contohnya, kod berikut boleh membaca fail teks yang dikodkan UTF-8:
$file = 'test.txt'; $contents = file_get_contents($file); $encoding = mb_detect_encoding($contents, mb_detect_order(), true); if ($encoding != 'UTF-8') { $contents = iconv($encoding, 'UTF-8', $contents); } echo $contents;
Jika tetapan set aksara dalam persekitaran pelayan salah , ia juga akan mengakibatkan aksara bercelaru. Set aksara boleh ditetapkan dalam fail konfigurasi PHP (php.ini) atau dalam fail konfigurasi pelayan. Contohnya, dalam fail php.ini, anda boleh menetapkan parameter berikut:
default_charset = "UTF-8" mbstring.language = "Chinese" mbstring.internal_encoding = "UTF-8" mbstring.http_input = "auto" mbstring.http_output = "UTF-8"
Jika format fail teks tidak betul, ia juga akan menyebabkan watak bercelaru. Sebagai contoh, di bawah platform Windows, aksara baris baharu yang digunakan dalam fail teks ialah CR+LF (aksara pemulangan kereta + aksara suapan baris), manakala di bawah platform Unix/Linux, aksara baris baharu yang digunakan dalam fail teks ialah LF (karakter suapan baris). ).
Anda boleh menggunakan fungsi fail() PHP untuk membaca kandungan fail dan menggunakan fungsi str_replace() untuk menggantikan baris baharu. Contohnya, kod berikut boleh membaca fail teks dan menggantikan baris baharu:
$file = 'test.txt'; $contents = file($file); $contents = str_replace(array(" ", ""), " ", $contents); echo implode(" ", $contents);
Jika fail teks mengandungi aksara haram, ia juga akan menyebabkan watak bercelaru. Anda boleh menggunakan fungsi preg_replace() PHP untuk menapis aksara haram. Contohnya, kod berikut boleh membaca fail teks dan menapis aksara haram:
$file = 'test.txt'; $contents = file_get_contents($file); $contents = preg_replace('/[ ---]/', '', $contents); echo $contents;
Di atas ialah beberapa sebab dan penyelesaian yang boleh menyebabkan aksara bercelaru apabila membaca fail teks dengan PHP. Apabila membangunkan PHP, kita mesti sentiasa memberi perhatian kepada tetapan pengekodan aksara dan spesifikasi format fail untuk mengelakkan masalah seperti aksara bercelaru.
Atas ialah kandungan terperinci php membaca teks bercelaru. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!