Фрагмент кода:
...
<div>
<div class="product-title">
<a href="#">Title<span class="last-word">4.0</span></a>
</div>
</div>
...
Нужно убрать:
<div class="product-title">
<a href="#">Title<span class="last-word">4.0</span></a>
</div>
Моя проба:
#<div class="product-title">\s*.+\s*<\/div>#ui
P.S. Моя проба рабочая, но я видел более универсальное решение, так как внутри могут быть и другие теги (кроме <div>
)
Вариант, который вырезает элемент любого типа(тег должен быть сбалансированым), у которого определен класс product-title
(классов у элемента может быть несколько) вместе со всеми дочерними элементами(если есть) любой вложенности. Теги дочерних элементов могут быть несбалансированными(например: <input ... />
) или отсутствовать вовсе. Шаблон не чувствителен к форматированию текста.
Для извлечения тегов элементов, в шаблоне используются: backreferences; модификатор s
- метасимвол .
включает также и перевод строк.
<?php
$input = <<< EOT
<div>
<div class="product-title">
<a href="#">Title<span class="last-word">4.0</span></a>
</div>
</div>
EOT;
$output = preg_replace(
"#<([A-Z][A-Z0-9]*)\b[^>]*?\bclass=\".*?\bproduct-title\b.*?\">[^<]*?(?:<([A-Z][A-Z0-9]*)\b[^>]*?>.*?(?:</\\2>)?)?[^<]*?</\\1>#sui",
"",
$input
);
echo $output;
Пример с более сложной иерархией дочерних элементов у вырезаемого элемента
Виртуальный выделенный сервер (VDS) становится отличным выбором
Развернул сайт на Docker, но не могу сконнектить IDE VSCode c моим PHP серверомПосмотрел кучу мануалов, но даже не знаю где посмотреть ошибки от этого...
Есть сайт на Laravel, и есть API, которые расположены на другом сервере, они выполняют все функции ЛК от регистрации до пополнения баланса и прочими...
Я использую виджет kartik yii2-widget-fileinputВо вью вставил следующий код: