Rumah > pembangunan bahagian belakang > masalah PHP > php membaca teks bercelaru

php membaca teks bercelaru

WBOY
Lepaskan: 2023-05-28 16:06:40
asal
695 orang telah melayarinya

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.

  1. Ralat format pengekodan fail teks

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;
Salin selepas log masuk
  1. Ralat tetapan persekitaran pelayan

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"
Salin selepas log masuk
  1. Ralat format fail teks

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);
Salin selepas log masuk
  1. Fail teks mengandungi aksara haram

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;
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan