Я использую WordPress как систему CMS, и я хочу обернуть каждый p-тэг в некоторый HTML, который мне нужен для стилизации и позиционирования на моем веб-сайте. Теперь я нашел фрагмент кода, который делает это чудесно для меня, но он переусердствует прямо сейчас.
Это код PHP:
function tekst_wrapper($content) { // match any p tags $pattern = '~<p.*</p>~'; preg_match_all($pattern, $content, $matches); foreach ($matches[0] as $match) { // wrap matched p tag with div $wrappedframe = '<div>' . $match . '</div>'; //replace original p tag with new in content $content = preg_replace($pattern, $wrappedframe, $content); } return $content; } add_filter('the_content', 'tekst_wrapper');
Это добавляет теги div вокруг каждого p-тега. Но для каждого p-тега есть сообщение, он начинает добавлять больше тегов div для каждого p-тега. Итак, скажем, у меня есть четыре p-тега, получившийся HTML будет:
<div> <div> <div> <div> <p>random text</p> </div> </div> </div> </div> <div> <div> <div> <div> <p>random text</p> </div> </div> </div> </div> <div> <div> <div> <div> <p>random text</p> </div> </div> </div> </div> <div> <div> <div> <div> <p>random text</p> </div> </div> </div> </div>
Очевидно, это не то, что мне нужно, так как я просто хочу, чтобы каждый тэг p был обернут в один тег div (или что бы ни изменил мой HTML-код). Теперь мои навыки PHP не так уж хороши, но я предполагаю, что foreach заставляет его добавлять теги div для каждого совпадения, которое он находит в массиве $ matches? Есть ли способ исправить это?
Любая помощь приветствуется.