2016-09-13 5 views
0

Привет я пытаюсь разрешить HTML-теги в строку, используя strip_tags в PHPstrip_tags не позволяет << and >> в PHP

Но моя строка содержит «< <» и «>>» и я пытаюсь, чтобы те, вещи, используя код ниже:

$allowTags = "<<>><span><s><strike><del><bdo><big><small><ins><cite><acronym><font><sup><sub><b><u><i><a><strong><em><code><samp><tt><kbd><var><q><table><thead><tfoot><tbody><tr><th><td><ol><ul><li><dl><dt><dd><form><input><select><textarea><option><div><p><h1><h2><h3><h4><h5><h6><pre><center><blockquote><address><hr><img><br><indexentry><indexinsert><bookmark><watermarktext><watermarkimage><tts><ttz><tta><column_break><columnbreak><newcolumn><newpage><page_break><pagebreak><formfeed><columns><toc><tocentry><tocpagebreak><pageheader><pagefooter><setpageheader><setpagefooter><sethtmlpageheader><sethtmlpagefooter><annotation><template><jpgraph><barcode><dottab><caption><textcircle><fieldset><legend><article><aside><figure><figcaption><footer><header><hgroup><nav><section><mark><details><summary><meter><progress><time>"; 

$test = "<span>white</span>red<<blue"; 
file_put_contents("test.log", print_r($test,true),FILE_APPEND); 
$text = strip_tags($test, $allowTags); 
file_put_contents("test.log", print_r($text,true),FILE_APPEND); 

Но ее не работает, я получаю выход как <span>white</span>red и ожидаемый результат является <span>white</span>red<<blue

Пожалуйста, помогите мне решить эту проблему. Заранее спасибо.

+1

Это то, что делает функция. [Прочитайте руководство, когда вы хотите понять, что делает функция] (http://php.net/strip-tags). То, что вы ищете, это ['htmlspecialchars()'] (http://php.net/htmlspecialchars), который правильно кодирует эти символы для HTML, а не удаляет их. – Sherif

+0

Несомненно, «стричь теги» не дал вам подсказки относительно того, что будет делать функция? – Lee

+2

@Lee И с каких пор это << тег HTML? W3 должен обновить спецификацию с момента последнего проверки. Функция немного слишком жадная, но это было так на некоторое время. – Oldskool

ответ

0

<< не является тегом, вы должны использовать регулярное выражение (например, preg_replace()) или str_replace(), чтобы избежать этого.

+0

Он не пытается их удалить ... – Lee

+0

Это действительно даже не ответ. Вы свободно заявляете * что *, но не пытались объяснить, как это сделать. Помимо того, что как 'str_replace', так и' preg_replace' являются и плохим способом решения проблемы, вы даже не пытаетесь предоставить код, демонстрирующий, как они будут использоваться для решения проблемы. – Sherif