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 "<" dan berakhir dengan ">" 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 "<" dan berakhir dengan ">" dalam rentetan, tetapi tidak boleh < > atau teg <
Kita boleh menggunakan (?!) pandangan negatif ke hadapan untuk mencapai matlamat ini. Ungkapan ini memberitahu enjin ungkapan biasa, "Cari teg yang bermula dengan "<" dan berakhir dengan ">" tetapi bukan teg < a > atau < img >
Perhatikan bahawa kami juga menggunakan " " untuk memadankan sempadan label. Ini kerana jika kita meninggalkannya, contohnya menggunakan "" dan "< input >".
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!