2011-11-26 87 views
-5

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

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

查看与此主题相关的任何数量的问题:http://stackoverflow.com/search?q=%5Bphp%5D+extract+part+of+a+webpage – deceze

回答

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了解更多信息。

1

你的问题不是很大大问,但是在抽象的层面上,我相信,你正在寻找的字符串操作经验:)这里有我分享几个环节,

顺便说一句,这一切都取决于你想要提取什么,如果你能详细阐述更详细的问题,这将有助于我们回答你的位置!

欢呼

PS:屏幕抓取是一个坏主意,除非你是弃置自己的网页(这DOSENT真正意义:))。理由就是你永远不知道当WWW.EXAMPLE.COM都不会改变,你的操控逻辑将不再USEFULL

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; 
?>