我想从网上下载一个页面,当你使用像Firefox这样的简单浏览器时允许这样做,但是当我使用"file_get_contents"时,服务器拒绝并回复说它理解命令但不允许这样的下载.
那么该怎么办?我想我在一些脚本(Perl)中看到了一种通过创建用户代理和cookie使您的脚本像真正的浏览器一样的方法,这使得服务器认为您的脚本是真正的Web浏览器.
有没有人对此有所了解,如何做到这一点?
为什么我没有得到file_get_contents($ myurl)的回报,但我确实获得了wget的输出
更新:
我使用curl获取返回标题和结果,并发现它在标题上而不是在正文中
HTTP/1.1 200 Document follows
Transfer-Encoding: chunked
Content-type: text/plain
Server: XMS (724Solutions HTA XSAM_30_M2_B020 20070803.172831)
Date: Fri, 21 May 2010 10:48:31 GMT
Accept-Ranges: bytes
HTTP/1.1 404 ChargedPartyNotAvailable
Transfer-Encoding: chunked
Content-type: text/plain
Server: XMS (724Solutions HTA XSAM_30_M2_B020 20070803.172831)
Date: Fri, 21 May 2010 10:34:13 GMT
Accept-Ranges: bytes
Run Code Online (Sandbox Code Playgroud)
我怎样才能提取出"200 Document Follow"和"404 ChargedPartyNotAvailable"?
我正在加载一个文本文件以放入带有file_get_contents()的textarea,并且由于某种原因,每次加载时都会在原始文本之前和之后插入空格.我知道保存期间没有插入空格,因为我从FTP客户端检查了保存的文件,没有空格.
<textarea name="banner" cols="100" rows="20">
<?php echo file_get_contents('banner.txt'); ?>
</textarea>
<br/>
Run Code Online (Sandbox Code Playgroud)
我正在为其他几个文件使用类似的代码,结果相同.确切的空白区长度为16个字符.
我正在尝试使用PHP的file_get_contents()功能从美国国家档案馆的网站检索数据,就像我过去制作类似的脚本一样.但是出于某种原因,在这种情况下,该函数不会检索任何文件的内容.
我必须承认,我对这种工作没有多少经验.有人可能会指出为什么文件可能无法正确返回,即使我手动在地址栏中输入URL时文件显示正常.这是源代码(或不输出任何内容的最小版本):
$asn = $_REQUEST['asn'];
$format = $_REQUEST['output'];
$data = array();
if(!empty($asn))
{
$url_to_get = 'http://aad.archives.gov/aad/print-record-detail.jsp?dt=893&mtch=1&tf=F&q=31371273&bc=sl,fd&rpp=10&pg=1&rid=2546302';
$content = file_get_contents($url_to_get);
echo $content;
}
Run Code Online (Sandbox Code Playgroud)
是否可能在localhost此处运行脚本可能会导致问题?
对于一个类项目,我们应该从另一个网站提取数据.我从GiantBomb.com选择了类似于给定游戏的游戏(在我的剧本中给予他们学分)
// $gameLink = "/call-of-duty-black-ops/61-26423/";
$html = file_get_contents("http://www.giantbomb.com" . urlencode($gameLink) . "games_similar/");
echo $html;
Run Code Online (Sandbox Code Playgroud)
这什么都不返回.
但是,如果$ gameLink是手动输入的:
$html = file_get_contents("http://www.giantbomb.com/call-of-duty-black-ops/61-26423/games_similar/");
echo $html;
Run Code Online (Sandbox Code Playgroud)
现在,它将正确返回结果.我的代码出了什么问题?我尝试urlencode()在整个链接上执行,而不仅仅是$ gameLink变量,但它仍然失败.有没有人有什么建议?
目前我使用file_get_contents命令来包含文件的html.现在我添加了PHP,它导致了一个问题.PHP被读作html,因此没有被执行.如何使用PHP执行检索文件内容?
哦,我需要内容.所以包括在这种情况下不起作用我相信,对吗?
谢谢!
这段代码工作了几天,直到它在最糟糕的时间停止工作.它只是从NOAA网站提取天气警报信息并将其显示在我的页面上.有人可以告诉我为什么会突然失败?
$file = file_get_contents("http://forecast.weather.gov/showsigwx.php?warnzone=ARZ018&warncounty=ARC055");
preg_match_all('#<div id="content">([^`]*?)<\/div>#', $file, $matches);
$content = $matches[1];
echo "content = ".$content."</br>" ;
echo "matches = ".$matches."</br>" ;
print_r ($matches); echo "</br>";
echo "file </br>".$file."</br></br>" ;
Run Code Online (Sandbox Code Playgroud)
现在我得到的只是一个空数组.
这是输出..
content = Array
matches = Array
Array ( [0] => Array ( ) [1] => Array ( ) )
file = the full page as requested by file_get_contents
Run Code Online (Sandbox Code Playgroud) 嗨,我希望替换我通过file_get_contents加载的html电子邮件中的单词
这是我的代码:
<?
$message = file_get_contents("http://www.MYwebsiteExample.com/EmailConfirmation.php");
$message = preg_replace('/SAD/', "HAPPY", $message);
// Also tried this below and it does not work either
$message = str_replace('/SAD/', "HAPPY", $message);
?>
Run Code Online (Sandbox Code Playgroud)
我希望找到SAD的所有模式(区分大小写)并用HAPPY替换它们.出于某种原因,如果我使用file_get_contents它似乎没有工作.
谢谢
更新:2013年1月22日
实际上,抱歉当我添加$时更正不起作用.它对我的代码不是必需的.我可以做一个解决方法,但这不起作用:
$message = str_replace("$SAD", "HAPPY", $message); /// does not work. Not sure why
$message = str_replace("SAD", "HAPPY", $message); /// without the $ it does work.
Run Code Online (Sandbox Code Playgroud) 如果我只使用一个单词,谷歌地理编码api的工作非常好
悉尼
但如果我使用:
悉尼,澳大利亚
它不起作用它说:
警告:file_get_contents(https://maps.google.com/maps/api/geocode/json?address=sydney,Australia&sensor = false):无法打开流:HTTP请求失败!HTTP/1.0 400错误请求
虽然我粘贴这个url时它在我的浏览器中有效,但是当我使用这个功能时却file_get_contents没有.
我的问题很简单,当我粘贴此结果时,为什么它在我的浏览器中有效,以及为什么它不能与下面的代码一起使用.当然,如何解决这个问题.
$a = file_get_contents("https://maps.google.com/maps/api/geocode/json?address=sydney, Australia&sensor=false");
Run Code Online (Sandbox Code Playgroud) 我有html邮件模板,我想通过php mail()函数发送给我的用户。
我将此模板放入php变量,并希望使用sprintf()函数将其插入到指定的变量中,但是我正在获得此-
警告:sprintf():参数太少
在我的html模板中
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>template</title>
<style type="text/css">
@media screen and (max-width: 600px) {
table[class="container"] {
width: 95% !important;
}
}
#outlook a {
padding: 0;
}
body {
width: 100% !important;
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
margin: 0;
padding: 0;
}
.ExternalClass {
width: 100%;
}
.ExternalClass,
.ExternalClass p,
.ExternalClass span,
.ExternalClass font,
.ExternalClass td,
.ExternalClass div {
line-height: …Run Code Online (Sandbox Code Playgroud)php ×10
html ×2
asprintf ×1
curl ×1
geocoding ×1
preg-replace ×1
scrape ×1
screen ×1
space ×1
str-replace ×1
text ×1
whitespace ×1