Как заменить тег в тексте например все h3 на следующий h3 на и т.д.?

Для замены тегов в тексте на другие теги в PHP можно использовать различные подходы и функции. Рассмотрим несколько способов выполнить эту задачу.

1. Использование регулярных выражений:
Для замены тегов в тексте на другие теги можно воспользоваться функцией preg_replace(). В данном случае можно задать регулярное выражение, которое будет искать все вхождения определенного тега и заменять его на новый тег.

   $text = "<h3>Заголовок 1</h3><h3>Заголовок 2</h3><h3>Заголовок 3</h3>";
   $text = preg_replace("/<h3>(.*?)</h3>/", "<h4>$1</h4>", $text);
   echo $text;

В данном примере все теги <h3> будут заменены на <h4>. Результатом будет <h4>Заголовок 1</h4><h4>Заголовок 2</h4><h4>Заголовок 3</h4>.

Важно отметить, что использование регулярных выражений для работы с HTML не рекомендуется из-за их ограничений и потенциальных проблем. Более удобным и безопасным подходом будет использование библиотек для работы с HTML, таких как DOMDocument или SimpleHTMLDom.

2. Использование библиотеки DOMDocument:
Библиотека DOMDocument в PHP предоставляет возможности для работы с HTML-документами в виде дерева узлов. С помощью неё можно легко найти и заменить теги.

   $text = "<h3>Заголовок 1</h3><h3>Заголовок 2</h3><h3>Заголовок 3</h3>";
   
   $dom = new DOMDocument();
   $dom->loadHTML($text, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
   
   $oldTags = $dom->getElementsByTagName('h3');
   foreach ($oldTags as $oldTag) {
       $h4Tag = $dom->createElement('h4', $oldTag->nodeValue);
       $oldTag->parentNode->replaceChild($h4Tag, $oldTag);
   }
   
   $newText = $dom->saveHTML();
   echo $newText;

В данном примере создается объект DOMDocument и загружается в него HTML-код. Затем с помощью метода getElementsByTagName() ищутся все теги <h3>. Циклом проходятся по найденным тегам и создаются новые теги <h4> с содержимым оригинальных тегов, которые заменяют оригинальные теги с помощью метода replaceChild(). Наконец, сохраненная версия HTML-кода выводится на экран.

Этот подход более надежен и гибок, так как позволяет работать со структурой HTML-документа, предотвращая возможные проблемы при использовании регулярных выражений.

3. Использование библиотеки SimpleHTMLDom:
SimpleHTMLDom - это ещё одна библиотека для парсинга и манипулирования HTML-документами в PHP. Она имеет простой и удобный API для работы с HTML.

   require('simple_html_dom.php');

   $text = "<h3>Заголовок 1</h3><h3>Заголовок 2</h3><h3>Заголовок 3</h3>";
   
   $html = str_get_html($text);
   $oldTags = $html->find('h3');
   
   foreach ($oldTags as $oldTag) {
       $newTag = str_get_html('<h4>' . $oldTag->innertext . '</h4>');
       $oldTag->outertext = $newTag->save();
   }
   
   echo $html->save();

В данном примере сначала подключается библиотека SimpleHTMLDom. Затем HTML-код преобразуется в объект SimpleHTMLDom с помощью функции str_get_html(). С помощью функции find() ищутся все теги <h3>. Циклом проходятся по найденным тегам и создаются новые теги <h4>, которые заменяют оригинальные теги с помощью атрибута outertext. Наконец, сохраненная версия HTML-кода выводится на экран с помощью метода save() объекта SimpleHTMLDom.

SimpleHTMLDom очень удобен для таких задач, так как облегчает доступ и манипулирование элементами HTML.

Выбор способа зависит от ваших потребностей и предпочтений. Рекомендуется избегать использования регулярных выражений и предпочитать библиотеки DOMDocument или SimpleHTMLDom для работы с HTML-кодом, так как они обеспечивают более безопасное и надежное решение.