Leonid
PHP? нет, не слышал...
Как регуляркой убрать вложенные теги
Делаю функцию для чистки HTML, и вот такая задача - иногда попадаются абзацы, вложенные в абзацы или в заголовки (это при копировании из ворда)
Например
<p>Текст абзаца <p>вложенный абзац</p> продолжение текста</p>
<h1>Текст заголовка <p>вложенный текст</p> продолжение текста</h1>
Для заголовков без проблем чищу:
$text = preg_replace("/<h1>(.*)<p>(.*)<\/p>(.*)<\/h1>/smiU", "<h1>$1 $2 $3</h1>", $text);
А вот для абзацев такое не проходит, точнее работает, но при повторном пропускании обработанного текста через скриптначинает вырезать уже правильные теги.
в общем нужна регулярка, не пойму как ее правильно написать, такого вида
$text = preg_replace("/<p>( любые символы кроме строки </p>)<p>(.*)<\/p>(любые символы кроме строки <p> )<\/p>/smiU", "<h1>$1 $2 $3</h1>", $text);
Делаю функцию для чистки HTML, и вот такая задача - иногда попадаются абзацы, вложенные в абзацы или в заголовки (это при копировании из ворда)
Например
<p>Текст абзаца <p>вложенный абзац</p> продолжение текста</p>
<h1>Текст заголовка <p>вложенный текст</p> продолжение текста</h1>
Для заголовков без проблем чищу:
$text = preg_replace("/<h1>(.*)<p>(.*)<\/p>(.*)<\/h1>/smiU", "<h1>$1 $2 $3</h1>", $text);
А вот для абзацев такое не проходит, точнее работает, но при повторном пропускании обработанного текста через скриптначинает вырезать уже правильные теги.
в общем нужна регулярка, не пойму как ее правильно написать, такого вида
$text = preg_replace("/<p>( любые символы кроме строки </p>)<p>(.*)<\/p>(любые символы кроме строки <p> )<\/p>/smiU", "<h1>$1 $2 $3</h1>", $text);