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

mikhail_14

Мы не знаем что это такое, если бы мы знали...
Здравствуйте,

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

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

Сказать легко - сделать не могу 😶
 
Использовать функцию preg_replace и в исходном коде менять "h1" на "h1 class='header1" и так далее.
Не, тормози. Зачем тут регулярки? Если уж так пошло, то тут и простой замены хватит.

Автор, откуда статьи, откуда их разметка? То есть это готовые файлы, или с базы все тянется, или откуда? Для оптимального решения твоей задачи мало данных
 
Мне надо было прогнать все записи из базы и перезаписать их с добавленными данными.

Подсказали на другом форуме такой скрипт:

$text = '
<h2>11 </h2>
<h2>22 </h2>
';
$res = preg_replace_callback('/<h2/', function(){
static $x = 0;
$x++;
return '<h2 class="header' . $x . '"';

}, $text);

print $res;

Работу выполняет.

Спасибо за помощь в поиске решения!
 
А зачем вообще это делать? В чём прикладной смыл задачи?
 
Подсказали на другом форуме такой скрипт:

$text = '
<h2>11 </h2>
<h2>22 </h2>
';
$res = preg_replace_callback('/<h2/', function(){
static $x = 0;
$x++;
return '<h2 class="header' . $x . '"';

}, $text);

print $res;

Работу выполняет.

Вообще, как правильно подсказали выше можно справиться и обычной заменой:
PHP:
$text = '
<h2>11 </h2>
<h2>22 </h2>
';

$result = str_replace('<h2', '<h2 class="header"', $text);

echo $result;
 
Да тут одно то, что в БД храняться html тэги уже настораживает.
 
Да тут одно то, что в БД храняться html тэги уже настораживает.
Открою секрет, тебя это не должно пугать и настораживать, это все нормально. Есть масса CMSок и прочего, которые так делают.
 
Если тебе выхлоп WYSIWYG сохранить надо, что будешь сохранять и что там ненормального?
 
Сверху