frost18
@frost18
Программист PHP

Как сделать обрамление блоков code тегами pre?

Имеется текст в котором вставлены блоки с кодом "code". Мне необходимо эти блоки засунуть в тег "pre", а содержимое тегов "code" вывести через htmlspecialchars
$text = 'Создадим разметку <code lang="xml"><div>title</div></code> тест';
$text .= 'Создадим разметку2 <code lang="php"><div>title2</div></code> тест2';
$pattern = '/<code.*>.*<\/code>/i';
$replacement = '<pre></pre>';
$text = preg_replace($pattern, $replacement, $text);
  • Вопрос задан
  • 212 просмотров
Пригласить эксперта
Ответы на вопрос 1
@AndryG
Регулярным выражением очень часто нельзя безошибочно и безопасно распарсить/конвертировать html код.

Для 100% результата скормите свой текст DOM парсеру (их в php есть несколько), он корректно разберет код и отдаст вам дерево из DOM-элементов. Измените, как вам угодно это дерево и сохраните его обратно в строку html.
Так вы обойдете стороной кучу ошибок в разборе исходной строки и генерации верного html.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы