Bu kadar basit değil gibi olabilir şey, çünkü ne htmlspecialchars()
nor htmlentities()
provides any options to ignore certain tags (both functions don't even know the meaning of the notion of tags).
Sen kullanıcıları örn, onların mesajları biçimlendirmek için izin vermek için bazı başka yollarla kullanabilirsiniz BBCode, Textile ya da Markdown. Hepsi için mevcut PHP ayrıştırıcılarda vardır.
Eğer html etiketleri ile sopa gerekir Eğer onlar htmlspecialchars()
. You can then postprocess the result to change back the format to normal HTML-tags. The following sample visualizes this process for a simple <a>
-etiketi etkilenmez olmayacak şekilde izin etiketlerini formatlar bazı önişlemesini çare olabilir. Düzenli ifadeler ile HTML işleme hata eğilimli ve gitmek için her zaman bir yol olduğunu unutmayın - Ben sadece bu örnekte basitlik uğruna bunu kullanacağız.
$input = preg_replace('~<(/?\w+([^>]*?))>~', '|#$1#|', $input);
$input = htmlspecialchars($input);
$inoput = preg_replace('~|#(/?\w+(.*?))#|~', '<$1>', $input);
Bu denenmemiş ve kesinlikle çok daha fazla iş gerektirir.