Взрываться от 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/

Другие вопросы по тегам