В настоящее время у меня есть сценарий для моего сайта WordPress, который находит <h3>
-tag и добавляет к нему id
<?php $phrase = get_the_content(); $phrase = apply_filters('the_content', $phrase); $replace = '<h3 id="thetag">'; echo str_replace('<h3>', $replace, $phrase); ?>
Я хотел бы добавить id="$i++"
ко всем тэгам <h3>
.
Я думал об этом, но это дает мне ошибку foreach:
<?php $phrase = get_the_content(); $phrase = apply_filters('the_content', $phrase); $tag='<h3>'; $i=0; foreach ($tag as $replace){ $replace = '<h3 id="'.$i++.'">'; echo str_replace($tag, $replace, $phrase); } ?>
Ошибка: Warning: Invalid argument supplied for foreach() in...
Есть идеи? М.
В функции str_replace третий параметр является выходной переменной, чтобы проверить, сколько было выполнено замещений. Используйте функцию preg_replace:
<?php $phrase = get_the_content(); $phrase = apply_filters('the_content', $phrase); $tag='<h3>'; $i=0; $c = substr_count($phrase, $tag); for($i=0; $i<$c; $i++){ $replace = '<h3 id="'.$i.'">'; $phrase = preg_replace('/'.$tag.'/', $replace, $phrase, 1); } echo $phrase; ?>
Сначала вы хотите получить массив всех тегов, вы делаете foreach на строке.
foreach(array("<h3>","<h3>") as $replace){ ... }
Я не тестировал это, но это поможет вам выйти. 🙂
С уважением.