我使用 php 网络抓取,我想在周日从下面的 html 代码中获取价格 (3.65):
<tr class="odd">
<td >
<b>Sunday</b> Info
<div class="test">test</div>
</td>
<td>
€ 3.65 *
</td>
</tr>
但是我没有找到最好的正则表达式来做到这一点...... 我使用这个 php 代码:
<?php
$data = file_get_contents('http://www.test.com/');
preg_match('/<tr class="odd"><td ><b>Sunday</b> Info<div class="test">test<\/div><\/td><td>€ (.*) *<\/td><\/tr>/i', $data, $matches);
$result = $matches[1];
?>
但是没有结果……正则表达式有什么问题? (我认为这是因为新的行/空格?)
最佳答案
不要使用正则表达式,HTML 不是正则的。
相反,使用像 DOMDocument
这样的 DOM 树解析器。这documentation
可能对你有帮助。
虽然我还没有尝试过,但 /s
开关应该可以帮助您使用原来的正则表达式。
关于PHP 网页抓取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11827370/