如何使用file_get_contents仅提取某些数据

时间:2011-11-26 01:19:08

标签: php web web-scraping file-get-contents

如何使用file_get_contents()提取$homepage变量的某个部分?

<?php
$homepage = file_get_contents('http://www.example.com/');
echo $homepage;
?> 

3 个答案:

答案 0 :(得分:1)

你的问题并不是很受欢迎,但是在抽象层面我相信你正在寻找字符串操作课程:)这里是我分享的几个链接,

顺便说一句,这一切都取决于你想要提取的内容,如果你能详细说明更详细的问题,那将有助于我们回答你的问题!

欢呼声

PS:除非您正在自行删除网页,否则屏幕删除是一个糟糕的想法(这些事情确实让人感到厌倦:))。当WWW.EXAMPLE.COM即将改变时,你永远都不会知道,你的操作逻辑将不再有用

答案 1 :(得分:0)

最佳解决方案可能是在加载$homepage变量后对其进行处理。请查看String functionsregular expressions

file_get_contents()支持可用于控制文件的哪些部分加载的offsetmaxlen选项,但offset的文档描述为“不可预测” “在非本地文件中使用时,如示例中所示。

那就是说,maxlen可能是安全的,所以如果你知道你想要的东西将在文件的前N个咬合中,你可以用它来修剪掉。因此,如果您确定只需要首页的前100个字节,则可以执行file_get_contents ( 'http://www.example.com/', false, NULL, -1, 100)之类的操作。但除非你想要前100个字节,否则你仍然需要进行一些后期处理。

有关详细信息,请参阅http://php.net/manual/en/function.file-get-contents.php

答案 2 :(得分:0)

这是一个使用正则表达式和PHP的示例。

<?php
$f = file_get_contents ("http://www.example.com");
$f = preg_replace ("(\&nbsp;|\r|\n|\t)", "", $f); // optional
$f = preg_replace ("/\s\s+/", " ", $f); // optional spaces

if (preg_match ("/<h1>(.*)<\/h1>/", $f, $res)) {
    $data = $res [1];
}

echo $data;
?>