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

PHP从html文件中提取特定标记之间的数据,php,regex,domdocument,Php,Regex,Domdocument,所以我有一个PHP脚本,它显示一个html页面。我需要做的是提取特定元素的innerHTML,下面我将展示我需要提取的确切内容 因此,我需要提取的是0.0225序列。以下是一个HTML文件的片段: <tr> <td>Income</td> <td id="income"> <font color="green"> <span data-c="2250000">0.022

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

在我看来,不值得去探究为什么正则表达式不起作用(不过对于一般的正则表达式知识来说,…一个
不算作新行(除非使用了
s
修饰符),字符类中的
*
允许这两个文字字符中的任何一个)

对于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;
$html='1!'
收入
0.0225卢比
';
$dom=新的domdocument();
$dom->loadHTML($html);
$xpath=newdomxpath($dom);
echo$xpath->query('//tr/td[@id=“income”]/font/span')[0]->nodeValue;

使用DOM解析器是正确的方法。你能告诉我你尝试了什么,什么没用吗?它抱怨
$dom->loadHTML($html)
这与我使用
file\u get\u contents()获取html有什么关系吗?与路径相关,如果
在我的情况下不是父级,我应该如何修改它?不应该是
loadhtml
正在查找HTML字符串。如果你
var\u dump
那是什么?它说的问题是什么?根据需要修改xpath<代码>$xpath->query('//td[@id=“income”]/font/span')[0]->nodeValue
应该可以让您到达那里。我尝试直接插入链接而不是
$html
,它工作正常,但我遇到了另一个问题,它与最后一行有关,我认为
query()的路径
。在您的情况下,它可以正常工作,但是在我的情况下,我应该如何修改它,或者是否有一些创建此路径的规则?抱歉(可能是)愚蠢的问题,我刚刚接触PHP,不知道如何正确使用它,但是)抱歉,插入链接和使用
file\u get\u content()
插入变量都不起作用。在第一个ase中,它抛出下一个错误
可恢复致命错误:DOMDocument类的对象无法转换为C:\xampp\htdocs\index.php第4行的字符串
,在第二个ase中,该错误:
标记nav invalid in Entity;HtmlParserEntityRef:应为“;”在实体上;标记页脚在实体中无效;DOMDocument类的对象无法转换为字符串
我无法发布HTML,但我将发布我正在使用的代码
$html = file_get_contents('the link');    
$dom = new DOMDocument();
$dom->load($html);
$element = $dom->getElemetById("income")->innerHTML;
$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;