从PHP中的html标签爆炸

时间:2013-10-24 08:58:40

标签: php joomla2.5 explode virtuemart

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

$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 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

几乎不可能做到,PHP无法知道订单号的开始位置。尝试jQuery,给出class =“order_nr”,你可以轻松访问它。

只有PHP的可能性才是使用strip_tags($ str),然后看看如何从剩余的字符串中获取订单nr。

答案 2 :(得分:0)

你可以使用“PHP Simple HTML DOM解析器”这个问题的绝佳解决方案,你可以在这里阅读更多相关信息http://simplehtmldom.sourceforge.net/