Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Mengeluarkan Watak Kawalan dengan Berkesan daripada Rentetan PHP?

Bagaimana untuk Mengeluarkan Watak Kawalan dengan Berkesan daripada Rentetan PHP?

Barbara Streisand
Barbara Streisandasal
2024-10-30 12:33:04827semak imbas

How to Effectively Remove Control Characters from PHP Strings?

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!

Kenyataan:
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