PHP Filtreleme Form Girdi

4 Cevap php

Birisi önce kapalı olduğundan emin değilim, ama sitenin hızlı arama bulamadık. ™ ¥ § © ÷ μ ¢ · ¶ ± € £ ® ancak HTML karakterleri tutmak: sanki karakterleri kaldırmak böylece şu anda ben, bir WYSIWYG bazı girişini süzmek için çalışıyorum. Ben htmlentitiesi ve htmlspecialcharacters denedim, ama hala inceliğini karakterleri bırakmak gibi görünüyor. Herhangi bir yöntem zaten mevcut, ya da herkes bu işlemek iyi bir regex var? Teşekkürler!

4 Cevap

Eğer> 5.2.0 PHP kullanıyorsanız Filter yardımcı olabilir.

Bu regex çalışması gerekir:

$ Text = preg_replace ('/ [¢ © ÷ μ · ¶ ± € £ ® ™ ¥ §] * /','', $ metin);

sen de böyle öğeleri yerini alabilir:

$bad = array('©','®'); $good = array('©', '®');

$ Text = preg_replace ($ kötü $ iyi, $ metin);

Eğer htmlentities() fonksiyonunu denediniz mi? Böyle deneyin:

$text = htmlentities($text);

Eğer http://php.net/manual/en/function.htmlentities.php de kontrol isteğe bağlı bazı parametreler var. Sen en azından, quote_style ve charset olanları ayarlamak zorunda kalabilirsiniz.

htmlentities() ve remove bu karakterler istiyorsanız htmlspecialchars() sizin için işe gidiş değildir, tamamen yerine sadece HTML kuruluşlara dönüştürerek daha.

EDIT

Ben sadece bir noktada size HTML varlıkları korumak istediklerini söyledi fark ettim. Bu durumda eğer, kullanmak htmlentities()! Bu onların html varlık eşdeğer içine tüm bu sembolleri çevirecektir. Eğer echo, hala kaldırmak için çalıştı karakterleri görmek için gidiyoruz, ama kaynağı görmek eğer, bunun yerine &name; biçimlendirilmiş varlık görürsünüz.


O kadar acı, bu bir regex kullanmak gerekebilir. Çoğu PHP fonksiyonları tek bir biçimi veya başka sizin için bu karakterleri korumak için çalışıyoruz. Ben en azından biliyorum ki, onlar bunları kaldırmak için bir işlev değil olduğunuzu şaşırtıcı!