PHP — аккуратный — не оставляйте тег HTML

Мне нужно очистить строку html, но мне нужно сохранить в ней собственный тег, например:

<CUSTOM_TAG/>

Я использую php-функцию tidy_repair_string().

$str = '<div><CUSTOM_TAG/><br><span>my little html</span></div>';
$tidy_config = array();
$tidy_text = tidy_repair_string($str, $tidy_config, 'utf8');

Я не нашел никаких параметров Tidy, которые могли бы мне помочь. Есть идеи ?

Заранее спасибо.


Я НАШЕЛ РЕШЕНИЕ:

Параметр Tidy, который вам нужно использовать: «'input-xml' => true». Всем спасибо за расследование!!


person emilie zawadzki    schedule 24.05.2013    source источник
comment
в вашем примере желаемый результат будет <CUSTOM_TAG/>my little html или просто <CUSTOM_TAG/>?   -  person STT LCU    schedule 24.05.2013
comment
Этот HTML должен быть действительным и прочее. Поэтому мне нужно сохранить CUSTOM_TAG в аккуратном HTML.   -  person emilie zawadzki    schedule 24.05.2013
comment
тогда, пожалуйста, предоставьте пару примеров ввода => желаемого вывода, пожалуйста.   -  person STT LCU    schedule 24.05.2013
comment
Ввод: '‹div›‹h1›‹CUSTOM_TAG id=487/›‹br›‹span›мой маленький html‹/span›‹/div›‹a/›' // Вывод: '‹div›‹CUSTOM_TAG id= 487/›‹br›‹span›мой маленький html‹/span›‹/div›'   -  person emilie zawadzki    schedule 24.05.2013


Ответы (3)


Параметр Tidy, который вам нужно использовать: «'input-xml' => true». Всем спасибо за расследование!!

person emilie zawadzki    schedule 24.05.2013

strip_tags( ) должен иметь возможность делать то, что вы хотите. Вы можете дать ему список тегов для пропуска.

Пример:

$str = '<div><CUSTOM_TAG/><br><span>my little html</span></div>';
$tidy_text = strip_tags( $str, "<CUSTOM_TAG>" );
person n00dle    schedule 24.05.2013
comment
Как я уже сказал в верхней части страницы, мне нужно привести в порядок мой HTML + сохранить пользовательские теги. - person emilie zawadzki; 24.05.2013

Вам нужно научить Tidy, что <CUSTOM_TAG> действителен, указав new-blocklevel-tags вариант конфигурации. Возможно, вам также потребуется добавить его в new-empty-tags, чтобы он принимал он без содержимого или атрибутов, в противном случае он, вероятно, удалит его.

person Niels Keurentjes    schedule 24.05.2013
comment
Я пытался это сделать: $tidy_config = array('new-blocklevel-tags' => 'CUSTOM_TAG', 'new-empty-tags' => 'CUSTOM_TAG'); Вроде не работает... - person emilie zawadzki; 24.05.2013
comment
Если я попробую это сделать в Интернете с помощью infohound.net/tidy, он примет пользовательский тег только в том случае, если он указан в нижнем регистре. Когда я ввожу CUSTOM_TAG заглавными буквами, он все равно удаляет его. - person Niels Keurentjes; 24.05.2013
comment
Между прочим, в вашем примере кода есть избыточное пространство в new- empty-tags. - person Niels Keurentjes; 24.05.2013
comment
Да, это была неправильная копия/вставка. В моем коде нет места. Но спасибо за ваше уведомление. - person emilie zawadzki; 24.05.2013