PHP: verirken HTML etiketi şerit nasıl <

5 Cevap php

Question: nasıl HTML etiketleri şerit ama büyük ve işareti küçüktür PHP kullanarak izin veririm?

PHP'nin strip_tags() fonksiyonunu kullandıysanız, bu oldukça işe yaramaz:

$string = '<p>if A > B</p>'
echo strip_tags($string);  // if A B
// but I want to output "if A > B"

UPDATE

Temelde, sadece / göstergede düz metin izin vermek istiyorum.

5 Cevap

Sen HTML Purifier bu yazdığın <p>if A > B</p> örnek ile çalışacak değil sadece, aynı zamanda örnek <p>1<2 && 6>4</p> DrJokepu tarafından yazılmış kullanabilirsiniz.

Hiçbiri set izin unsurları ile <p>1<2 && 6>4</p> girişi önüne alındığında, HTML temizleyici çıktıyı verir: 1&lt;2 &amp;&amp; 6&gt;4.

Bu bir HTML etiketi gibi görünüyor her şeyi şerit olacak.

htmlentities(preg_replace('/<\\S.*?>/', '', $text));

Ne yazık ki bu çalışma almak için en basit ve en güvenilir yolu, bir HTML çözümleyici kullanmaktır. This one hile yapacak. Bu yukarıdaki gibi HTML parçaları ele verirseniz ben bilmiyorum. , Daha sonra yapmak için sarma değil, eğer kabul HTML Önemsiz olmalıdır.

HTML düzenli olmadığından diğerleri regexp ile HTML ayrıştırma, işaret gibi, çok sayıda kenar karşılamak üzere durumlarda, ve zorluk vardır.

Yazdığım bu düzenli ifadeye deneyin: <([^>?] ?="(\"|[^"]) ") ?([^>] ='' (\'' | [^'']) {[( 2)]}? [^>] *>

Kullanın:

<p><?php echo htmlspecialchars("if A > B") ?></p>

(Tabii yerine değişmez dize herhangi girişini kullanabilirsiniz)

htmlspecialchars() < ve > koruyarak, HTML metin düz metin dönüştürür.