所以我有一个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;
答案 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;