Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Mengeluarkan Watak Kawalan dengan Berkesan daripada Rentetan PHP?
Melucutkan Aksara Kawalan daripada Rentetan PHP
S: Mengubah Ubah Ungkapan Biasa untuk Penyingkiran Aksara Kawalan
Seorang pembangun PHP sebelum ini menggunakan ungkapan berikut untuk membersihkan aksara kawalan seperti STX daripada rentetan:
preg_replace("/[^a-zA-Z0-9 .\-_;!:?äÄöÖüÜß<>='\"]/","",$pString)
Walau bagaimanapun, hasilnya terlalu menyekat, menimbulkan persoalan: bagaimanakah aksara kawalan boleh dialih keluar secara terpilih?
J: Menggunakan Kelas Watak Khusus untuk Pengenalpastian Watak Kawalan
Untuk menyasarkan watak kawalan dengan tepat, kelas watak yang lebih khusus boleh digunakan:
preg_replace('/[\x00-\x1F\x7F]/', '', $input);
Ungkapan ini sepadan dengan aksara dengan kod ASCII dalam julat x00-x1F dan x7F, merangkumi 32 aksara pertama dan x7F, yang termasuk aksara seperti carriage returns.
Memelihara Aksara Penting seperti Line Break
Jika aksara tertentu, seperti suapan baris atau pengembalian pengangkutan, perlu dikekalkan, urutan pelariannya boleh dikecualikan:
preg_replace('/[\x00-\x09\x0B\x0C\x0E-\x1F\x7F]/', '', $input);
Dalam ungkapan yang diubah suai ini, x0A (suapan baris) dan x0D (carriage return) dikecualikan daripada kelas aksara.
Sintaks dan Penamatan Moden
Adalah penting untuk ambil perhatian bahawa penamatan ereg_replace dalam PHP 5.3.0 dan yang penyingkiran seterusnya dalam PHP 7.0.0 mewajibkan penggunaan preg_replace berbanding ereg_replace.
Akhir sekali, Kelas Aksara untuk Watak Kawalan
Untuk alternatif yang ringkas dan mudah alih, kelas aksara [:cntrl:] boleh bekerja:
preg_replace('/[[:cntrl:]]/', '', $input);
Atas ialah kandungan terperinci Bagaimana untuk Mengeluarkan Watak Kawalan dengan Berkesan daripada Rentetan PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!