За последние 24 часа нас посетили 22962 программиста и 1234 робота. Сейчас ищут 762 программиста ...

html валидация

Тема в разделе "PHP для новичков", создана пользователем nospiou, 4 июн 2018.

  1. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    Ищу библиотеку которая разрешает только определенные теги и определенные атрибуты. Самому писать лень. (strip_tags атрибуты не проверяет если вдруг кто решит напомнить)
    Пока что нашел вот это. Может есть что то более навороченное?
    PHP:
    1. <?php
    2. function stripUnwantedTagsAndAttrs($html_str){
    3.   $xml = new DOMDocument();
    4. //Suppress warnings: proper error handling is beyond scope of example
    5. //List the tags you want to allow here, NOTE you MUST allow html and body otherwise entire string will be cleared
    6.   $allowed_tags = array("html", "body", "b", "br", "em", "hr", "i", "li", "ol", "p", "s", "span", "table", "tr", "td", "u", "ul");
    7. //List the attributes you want to allow here
    8.   $allowed_attrs = array ("class", "id", "style");
    9.   if (!strlen($html_str)){return false;}
    10.   if ($xml->loadHTML($html_str, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD)){
    11.     foreach ($xml->getElementsByTagName("*") as $tag){
    12.       if (!in_array($tag->tagName, $allowed_tags)){
    13.         $tag->parentNode->removeChild($tag);
    14.       }else{
    15.         foreach ($tag->attributes as $attr){
    16.           if (!in_array($attr->nodeName, $allowed_attrs)){
    17.             $tag->removeAttribute($attr->nodeName);
    18.           }
    19.         }
    20.       }
    21.     }
    22.   }
    23.   return $xml->saveHTML();
    24. }
    25. ?>
     
  2. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    nospiou нравится это.
  3. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    Выглядит неплохо. Еще варианты?)
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    пурифаер бери и всё, только не забудь, что он требует всё-всё возможное указыать заранее, ничего не забывать.
     
  5. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    Прям с конфигом:)
    https://github.com/mewebstudio/Purifier