2011-12-16 4 views
1

Предположим, что $ reply = "blah blah blah>< blah blah blah"; (> < популярен смайлик в Корее)строки после «<» не могут быть видны при использовании функции PHP strip_tags

, но, когда я использую «strip_tags» раздеться каждый HTML и PHP теги в $ ответ, каждые символы после «<» удаляется.

Я думаю, что strip_tags перепутаны.

У вас есть решение проблемы.

+1

нет, если вы не отмените использование strip_tags – ajreal

+0

oh я вижу .. тогда я должен использовать str_replacce вместо strip_tags. благодаря! –

+0

@MintakSon: Скорее всего, вы должны использовать 'htmlspecialchars'. – Jon

ответ

1

Вы обрабатываете строку как HTML, если вы вызываете на нее strip_tags(). Поэтому эти объекты должны быть закодированы как &lt; и &gt;, прежде чем вы используете на нем strip_tags(), в противном случае они должны рассматриваться как начало и конец тегов HTML.

Вам необходимо будет закодировать эти объекты. Использование strip_tags() должно быть безопасным.

+0

+1, но что осталось бы для 'strip_tags' делать после того, как он был обработан с помощью' htmlspecialchars'? – Jon

+0

@ Jon Geez, я сейчас чувствую себя глупо;) – alex

+0

ой! это очень хорошая функция! спасибо за советы. хороший день, alex :) –

1

Интересно. Я бы лично сущность-кодирования частей, которые являются приемлемыми, а затем запустить теги полосы или htmlentities() после этого ...

<?php 
// Initial user-input 
$reply = "blah blah blah >< blah blah blah"; 

// Allow the emoticon you mentioned 
$reply = str_replace('><', '&gt;&lt;', $reply); 

// Then strip tags 
$reply = strip_tags($reply); 

Конечно, все это спорно, если вы просто htmlentites ($ ответов), и пусть пользователь кладет в скобки, если они хотят ...

+4

's/htmlentities/htmlspecialchars /' - во времена UTF8 нет веских причин кодировать такие вещи, как умлауты как html-сущности. – ThiefMaster

+0

Хорошая точка. Я всегда использую htmlentities ($ string, ENT_COMPAT, 'UTF-8'), но в основном потому, что это то, что я видел, что другие люди делают для i18n. Лучше просто использовать htmlspecialchars()? – landons

+0

@landons: Если весь ваш стек может обрабатывать UTF-8 (и, как говорит ThiefMaster, это почти 2012 год), то «htmlentities» просто раздувается. Кроме того, он делает HTML нечитаемым. – Jon