PHP 从 html 文件中提取特定标签之间的数据
PHP Extract data between specific tags from an html file
所以我有一个 PHP 脚本,它显示一个 html 页面。我需要做的是提取特定元素的内部HTML,下面我将展示我需要提取的确切内容
所以,我需要提取的是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 实现,但结果是一样的。我不知道我还能做什么,所以我想问我如何提取这些数字,以进行进一步编辑,然后将它们放回去...
所以,这是我的尝试:
使用 RegEx 的尝试:
$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;
不值得深入探讨为什么你的正则表达式不起作用,IMO(对于一般的正则表达式知识...... .
不计入新行(除非 s
修饰符使用)和 .*
中的字符 class 允许这 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;
所以我有一个 PHP 脚本,它显示一个 html 页面。我需要做的是提取特定元素的内部HTML,下面我将展示我需要提取的确切内容
所以,我需要提取的是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 实现,但结果是一样的。我不知道我还能做什么,所以我想问我如何提取这些数字,以进行进一步编辑,然后将它们放回去...
所以,这是我的尝试:
使用 RegEx 的尝试:
$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;
不值得深入探讨为什么你的正则表达式不起作用,IMO(对于一般的正则表达式知识...... .
不计入新行(除非 s
修饰符使用)和 .*
中的字符 class 允许这 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;