Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk membuang tag HTML menggunakan ungkapan biasa dalam PHP

Bagaimana untuk membuang tag HTML menggunakan ungkapan biasa dalam PHP

王林
王林asal
2023-06-24 08:22:391275semak imbas

Apabila menulis aplikasi web, kami selalunya perlu mengalih keluar teg HTML daripada input pengguna dan menukarnya kepada format teks biasa. Ini menghalang serangan skrip silang tapak (XSS) dan meningkatkan kebolehbacaan kandungan teks. Dalam PHP, anda boleh menggunakan ungkapan biasa untuk mencapai matlamat ini.

Kaedah biasa ialah menggunakan fungsi strip_tags() PHP. Fungsi ini mengalih keluar semua tag HTML daripada rentetan. Walau bagaimanapun, terdapat kes di mana anda mungkin mahu mengekalkan beberapa teg, seperti pautan dan teg imej. Dalam kes ini, ungkapan biasa berguna.

Pertama, mari kita lihat cara menggunakan ungkapan biasa untuk mengalih keluar teg HTML dan menukarnya kepada teks biasa. Berikut ialah contoh kod PHP mudah:

$string = "<p>这是带有<strong> HTML标记 </strong>的文本。</p>";
$text = preg_replace("/<[^>]+>/", '', $string);
echo $text; // 输出: 这是带有 HTML标记 的文本。

Maksud ungkapan biasa ini ialah: cari semua teks bermula dengan "c67bbd1cb8880ed97cfadea284140ce3" dalam rentetan, dan gantikannya dengan kosong ( iaitu padam).

Sekarang, mari lihat cara untuk menyimpan teg HTML tertentu sahaja. Katakan kita ingin menyimpan tag < Berikut ialah kod sampel:

$string = "<p>这是带有<strong> HTML标记 </strong>的文本,其中有<a href='http://example.com'>链接</a>和<img src='image.jpg'>。</p>";
$text = preg_replace("/<(?!a|img)[^>]*>/", '', $string);
echo $text; // 输出: 这是带有 HTML标记 的文本,其中有<a href='http://example.com'>链接</a>和<img src='image.jpg'>。

Maksud ungkapan biasa ini ialah: cari semua teks yang bermula dengan "c67bbd1cb8880ed97cfadea284140ce3" dalam rentetan, tetapi tidak boleh 6d267e5fab17ea8bc578f9e7e5e1570b atau teg <

Kita boleh menggunakan (?!) pandangan negatif ke hadapan untuk mencapai matlamat ini. Ungkapan ini memberitahu enjin ungkapan biasa, "Cari teg yang bermula dengan "c67bbd1cb8880ed97cfadea284140ce3" tetapi bukan teg 16e3673c8f9326235a5217cdf963cf19 atau a482408f4345e9b47492d085db8fef6a

Perhatikan bahawa kami juga menggunakan " " untuk memadankan sempadan label. Ini kerana jika kita meninggalkannya, contohnya menggunakan "64c0c3d59cec230f4870c5769e2845df" dan "2fbe6547fcb2fa6a5faf70a81ceaf6e4".

Dengan menggunakan kaedah di atas, anda boleh mengalih keluar teg HTML dan menukarnya kepada teks biasa menggunakan ungkapan biasa dalam PHP. Sila ambil perhatian bahawa ini hanyalah satu langkah dalam mencegah serangan XSS. Selalunya perlu menggunakan teknologi lain seperti pengesahan input, penapisan output dan pengurusan sesi untuk meningkatkan keselamatan aplikasi web.

Atas ialah kandungan terperinci Bagaimana untuk membuang tag HTML menggunakan ungkapan biasa dalam 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