Как раздать разные классы нескольким в тексте

Здравствуйте,

Подскажите как можно в исходном коде статей расставить классы для заголовков H2?
Статей много — вручную не вариант.

По сути надо в цикле пройтись по всем материалам и при встрече заголовка, в зависимости от его порядка в тексте, дать ему класс.
Например классы header1, header2, header13

Сказать легко — сделать не могу

 

Последовательно читаете, обрабатываете и при необходимости записываете обратно каждую запись (поле с контентом) коллекции. Если коллекций несколько, обрабатываете их в цикле или линейно (отдельными вызовами ф-ций/методов).

 

HTML:
  1. <!DOCTYPE html>
  2.     <title>H2</title>
  3.     <style>
  4.         .header1 { color: red; }
  5.         .header2 { color: green; }
  6.         .header3 { color: blue; }
  7.     </style>
  8. </head>
  9.  
  10. <div id=«content»></div>
  11.  
  12.     function generateHeaders()
  13.     {
  14.         const contentDiv = document.getElementById(‘content’);
  15.         for (let i = 0; i < 20; i++)
  16.        {
  17.            const header = document.createElement(‘h2’);
  18.            header.textContent = ‘Заголовок ‘ + (i + 1);
  19.            header.classList.add(‘header’ + (i + 1));
  20.            contentDiv.appendChild(header);
  21.        }
  22.    }
  23.  
  24.    document.addEventListener(«DOMContentLoaded», generateHeaders);
  25.  
  26. </body>
  27. </html>
  28.  
 

Я наверное завел вас в заблуждение.
Мне нужно взять статью из базы, обработать ее (расставить классы) и вернуть обратно в базу данных.
Т е на php сделать.

 

PHP:
  1. $text =
  2. <h2>11 </h2>
  3. <h2>22 </h2>
  4. ;
  5. $res = preg_replace_callback(‘/<h2/’, function(){
  6.     static $x = 0;
  7.     $x++;
  8.     return ‘<h2 class=»header’ . $x . ‘»‘;
  9.  
  10. }, $text);
  11. print $res;
 

Спасибо вам огромное!
Это прям то, что мне нужно.

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *