есть html текст в таком формате:
текст
<blockquote style="margin:0 0 0 .8ex">
123
<blockquote style="margin:0 0 0 .8ex">
456
</blockquote>
</blockquote>
мне надо изменить строку что бы получилось следующее:
текст
<div>спойлер-заголовок</div>
<div class='hidden'>содержимое blockquote</div>
пробовал через php через регулярку сделать, работает, но только с одним тегом, если появится вложенный, то регулярка "поймает" именно его и то что мне нужно окажется в родительском blockquote. вот регулярка:
$replacement = "$1<div class='spoiler-title bord'>Показать/скрыть цитату</div><div class='spoiler-content'>$2</div>$3";
return preg_replace("/(.*)(<blockquote.*<\/blockquote>)(.*)/", $replacement, $mess);
пока делал подумал может лучше это сделать на js, но так же возникли трудности с выбором элементов среди родителей которых нет этих же самых тегов.
в итоге 2 вопроса:
Если я правильно понял, то как-то так:
$mess = '
текст
<blockquote style="margin:0 0 0 .8ex">
123
<blockquote style="margin:0 0 0 .8ex">
456
</blockquote>
</blockquote>
999';
$replacement = "<div class='spoiler-title bord'>Показать/скрыть цитату</div><div class='spoiler-content'>$1</div>";
$test = preg_replace("/(<blockquote.*<\/blockquote>)/s", $replacement, $mess);
// Если не должно быть родительского <blockquote>, то так:
//$test = preg_replace("/<blockquote.*?>(.*)<\/blockquote>/s", $replacement, $mess);
var_dump($test);
Результат:
текст
<div class='spoiler-title bord'>Показать/скрыть цитату</div><div class='spoiler-content'>
<blockquote style="margin:0 0 0 .8ex">
123
<blockquote style="margin:0 0 0 .8ex">
456
</blockquote>
</blockquote>
</div>
999
Если я правильно понял, то так:
$string = 'текст
<blockquote style="margin:0 0 0 .8ex">
123
<blockquote style="margin:0 0 0 .8ex">
456
</blockquote>
</blockquote>';
echo preg_replace_callback('~<blockquote[^>]+>(.*)<\/blockquote>~si', function ($m) {
return '
<div class="spoiler-title bord">View/hide</div
<div class="hidden">'.$m[1].'</div>
';
}, $string);
Результат:
текст
<div class="spoiler-title bord">View/hide</div>
<div class="hidden">
123
<blockquote style="margin:0 0 0 .8ex">
456
</blockquote>
</div>
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Тобишь нужно скрыть верхушку у самописного диалогового окна (там где заголовок, кнопка выхода)При этом такая конструкция при инициализации...
В этой статье приведена следующая информация: