В PHP не силён вовсе. Знаю, что вопрос решается через preg_replace, но как точно?
Есть код:
<div class="product_photos">
<a href="img/prod_1.jpg"><img src="img/prod_1.jpg"></a>
<a href="img/prod_1.jpg"><img src="img/prod_1.jpg"></a>
<a href="img/prod_1.jpg"><img src="img/prod_1.jpg"></a>
</div>
<div class="product_left">
<table class="hars_table">
<tr>
<th>МОДЕЛЬ</th>
<td>Carry 105 base</td>
</tr>
<tr>
<th>Грузоподъёмность, кг</th>
<td>500</td>
</tr>
</table>
</div>
<div class="product_right">
<p>какой-то большой текст.</p>
</div>
Как должна быть написана регулярка, чтобы удалить весь код вокруг таблицы?
По=хорошему, надо бы html parser пользовать
$dom = new domDocument;
$dom->loadHTML($str);
$table = $dom->getElementsByTagName('table')[0];
echo $dom->saveHTML($table);
Убирает весь код вокруг первого найденного table:
<?php
$text = <<<'EOD'
<div class="product_photos">
<a href="img/prod_1.jpg"><img src="img/prod_1.jpg"></a>
<a href="img/prod_1.jpg"><img src="img/prod_1.jpg"></a>
<a href="img/prod_1.jpg"><img src="img/prod_1.jpg"></a>
</div>
<div class="product_left">
<table class="hars_table">
<tr>
<th>МОДЕЛЬ</th>
<td>Carry 105 base</td>
</tr>
<tr>
<th>Грузоподъёмность, кг</th>
<td>500</td>
</tr>
</table>
</div>
<div class="product_right">
<p>какой-то большой текст.</p>
</div>
EOD;
$matches = [];
if (preg_match('/<table(?:.*?)>(?:.*?)<\/table>/sm', $text, $matches)) {
echo $matches[0];
}
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости