Взрываться от HTML-тегов в PHP
Я хочу получить номер заказа из строки ниже.
$str = '<table class="adminlist">
<tbody><tr>
<td>Payment Name</td>
<td align="left"><span class="vmpayment_name">Aurthorize.net</span><span class="vmpayment_description">New payment gateway</span></td>
</tr>
<tr>
<td>Order number</td>
<td align="left">9b27041</td>
</tr>
<tr>
<td>Amount</td>
<td align="left">51.30 USD</td>
</tr>
<tr>
<td>Transaction ID</td>
<td align="left">2200484213</td>
</tr>
</tbody></table>';
Как я взрываюсь в php. Я пытался, но не взорвался. Я хочу номер заказа сверху строки как
9b27041
И главное, что все значения являются динамическими:(
3 ответа
Я думаю, что xpath - это хороший способ извлечь значение. Для этого я предполагаю, что положение строки номера заказа всегда одинаково. Код ниже делает трюк для меня.
<?php
$str = '<table class="adminlist">
<tbody><tr>
<td>Payment Name</td>
<td align="left"><span class="vmpayment_name">Aurthorize.net</span><span class="vmpayment_description">New payment gateway</span></td>
</tr>
<tr>
<td>Order number</td>
<td align="left">9b27041</td>
</tr>
<tr>
<td>Amount</td>
<td align="left">51.30 USD</td>
</tr>
<tr>
<td>Transaction ID</td>
<td align="left">2200484213</td>
</tr>
</tbody></table>';
$dom = new DOMDocument();
$dom->loadHTML($str);
$xpath = new DOMXPath($dom);
$nodes = $xpath->query("//tr[2]/td[2]");
$node = $nodes->item(0);
echo $node->textContent;
Практически невозможно сделать, PHP не может знать, где начинается номер заказа. Попробуйте jQuery, задайте class="order_nr", и вы можете легко получить к нему доступ.
Единственная возможность в PHP - использовать strip_tags($str), а затем посмотреть, как получить порядок nr из оставшейся строки.
Вы можете использовать "PHP Simple HTML DOM parser" - отличное решение для подобных проблем, вы можете узнать больше об этом здесь http://simplehtmldom.sourceforge.net/