1

我想从下面的字符串中获取订单号。

$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

主要的是所有值都是动态的:(

4

3 回答 3

1

我认为 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;
于 2013-10-24T09:21:21.370 回答
0

几乎不可能做到,PHP 不知道订单号从哪里开始。试试 jQuery,给 class="order_nr" 就可以轻松访问它。

PHP 中唯一的可能性是使用 strip_tags($str) 然后看看如何从剩余的字符串中获取 order nr。

于 2013-10-24T09:11:39.113 回答
0

您可以使用“PHP 简单 HTML DOM 解析器”来解决此类问题,您可以在此处阅读更多相关信息http://simplehtmldom.sourceforge.net/

于 2013-10-24T09:16:11.437 回答