PHP从html文件中的特定标签之间提取数据

时间:2018-07-29 22:41:36

标签: php regex domdocument

所以我有一个PHP脚本,其中显示了一个html页面。我需要做的是提取特定元素的innerHTML,下面将显示我需要提取的确切内容

因此,我需要提取的是0.0225序列。这是HTML文件的片段:

<tr>
    <td>Income</td>
    <td id="income">
        <font color="green">
            <span data-c="2250000">0.0225 RP</span>
        </font>
    </td>
</tr>

我尝试使用RegEx解析它(我知道不推荐这样做,但是我尝试了它),但我一无所获。我为PHP尝试了不同的DOM实现,但结果是相同的。我不知道还能做什么,所以我问我如何提取这些数字,以进行进一步的编辑,然后再放回去...

所以,这是我的尝试:

正则表达式的尝试:

$html = file_get_contents('the link');    
$regex = '#<td id="income"><font color="green"><span data-c="[.*]">(.*?) BTC</span></font></td>#';
if (preg_match($regex, $html)){echo yay;};

尝试使用DOM:

$html = file_get_contents('the link');    
$dom = new DOMDocument();
$dom->load($html);
$element = $dom->getElemetById("income")->innerHTML;

1 个答案:

答案 0 :(得分:2)

IMO不值得研究为什么您的正则表达式不起作用(尽管对于常规正则表达式知识...。.并不计入新行(除非使用s修饰符)和字符类中的.*允许使用这2个文字字符之一。

对于domdocument,您需要进一步进入DOM树以获得值。您可以为此使用xpath。

$html = '<tr>
    <td>Income</td>
    <td id="income">
        <font color="green">
            <span data-c="2250000">0.0225 RP</span>
        </font>
    </td>
</tr>';
$dom = new domdocument();
$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
echo $xpath->query('//tr/td[@id="income"]/font/span')[0]->nodeValue;