Удалите все содержимое между <tbody>и </tbody>, используя php - PullRequest
0 голосов
/ 23 октября 2018

Я работал над этим весь день и не могу понять это!У меня есть следующий код:

<?php echo $_product->getCustomProductInfo();?>
                                <?php if (!(trim($_product->gettempven()) =="" || trim($_product->gettempven()) =="None")){?>
                                <address style="position: absolute; right: 40px; top: 5px;">
                                    <a class="aw-widget-legal" href="https://www.accuweather.com/en/id/semaya/<?php echo $this->htmlEscape($_product->getData('tempven'));?>/weather-forecast/<?php echo $this->htmlEscape($_product->getData('tempven'));?>">
                                        <!--
                                        By accessing and/or using this code snippet, you agree to AccuWeather’s terms and conditions (in English) which can be found at https://www.accuweather.com/en/free-weather-widgets/terms and AccuWeather’s Privacy Statement (in English) which can be found at https://www.accuweather.com/en/privacy.
                                        -->
                                    </a>
                                    <div id="awcc1494497543780" class="aw-widget-current" style="width: 60px;" data-locationkey="<?php echo $this->htmlEscape($_product->getData('tempven'));?>" data-unit="c" data-language="en-us" data-useip="false" data-uid="awcc1494497543780">&nbsp;</div>
                                    <script type="text/javascript" src="https://oap.accuweather.com/launch.js"></script>
                                </address>
                                <?php } ?>

Это извлекает некоторую информацию из серверной части Mangento 1, эта информация ниже:

<table style="width: 900px; height: 156px;">
<tbody>
<tr>
<td><span style="color: #37454d;"><strong>Resort Name:</strong></span></td>
<td style="text-align: left;"><span style="color: #37454d;">explora Valle 
Sagrado, Peru</span></td>
</tr>
<tr>
<td><span style="color: #37454d;"><strong>Country Name:</strong></span></td>
<td><span style="color: #37454d; font-family: arial, helvetica, sans-serif; 
font-size: 13px; font-style: normal; font-variant-ligatures: normal; font- 
variant-caps: normal; font-weight: normal; letter-spacing: normal; text- 
align: left; text-indent: 0px; text-transform: none; white-space: normal; 
word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: 
#ffffff; text-decoration-style: initial; text-decoration-color: initial; 
float: none; display: inline !important;">Peru</span></td>
</tr>
<tr>
<td><span style="color: #37454d;"><strong>Resort Address:</strong></span> 
</td>
<td>
<div class="is-hidden-mobile blEntry address ui_link " data-popover="small" 
data-position="below" data-element=".content" data- 
options="closeOnMouseAway" data-maxwidth="300" data-mapfilters=""> 
<span>Unnamed Rd Urquillos, Peru</span></div>
</td>
</tr>
<tr>
<td><span style="color: #37454d;"><strong>Website:</strong></span></td>
<td>
<p><span style="color: #37454d;">https://www.explora.com/hotels-and- 
travesias/sacred-valley-peru/</span></p>
</td>
</tr>
<tr>
<td><span style="color: #37454d;"><strong>Phone:</strong></span></td>
<td><span style="color: #37454d;">+56 2 2395 2580</span></td>
</tr>
</tbody>
</table>
<p><iframe style="border:0" src="https://www.google.com/maps/embed? 
pb=!1m14!1m8!1m3!1d15528.573314149919!2d-72.0483157!3d- 
13.341359!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x0%3A0x1a052e519e34e771!
2sExplora+Valle+Sagrado!5e0!3m2!1sen!2sjp!4v1531275200849" height="450" 
width="600"></iframe></p>

То, что я пытаюсь достичь, это удалить всесодержание между и включая теги.

Есть ли способ, которым я могу это сделать?

Ваша помощь заранее оценена.

Спасибо:)

Ответы [ 2 ]

0 голосов
/ 23 октября 2018

Синтаксический анализ html с помощью регулярных выражений не рекомендуется, поскольку теги html могут иметь несколько уровней вложенности, что может дать вам неожиданные результаты.

Но на всякий случай вы делаете это как быстрый взломи не намерены использовать это решение в долгосрочной перспективе, вы можете использовать это регулярное выражение.

(?s)<table.*?<\/table>

Демонстрация здесь, https://regex101.com/r/XsnZiC/1

Это вид php-кода, который вы можете использоватьиспользуйте для этого

$table_str="<h1>my header</h1><table aa=bb>dsfsfd</table><p>hello para</p>";
$table_str = preg_replace("/(?s)<table.*?<\/table>/", "", $table_str);
echo $table_str;

Дайте мне знать, если у вас возникнут какие-либо проблемы.

0 голосов
/ 23 октября 2018

Если вы уверены, что есть только один элемент \<table\>, то вы можете просто сопоставить:

\<table[\s\S]+?\</table\>

и заменить на empty string.

Регулярное выражение просто начинается ссоответствие '<table', затем продолжает сопоставлять все до '</table>'.

После замены у вас будет содержимое в последнем '<p>'.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...