URL 使用 & 但不使用 &

URL working with & but not &

我有这个 link,效果很好。

http://a810-bisweb.nyc.gov/bisweb/PropertyProfileOverviewServlet?boro=3&houseno=512&street=bedford%20ave&requestid=0&s=A03C41B885B461E4F46BD08866A7430E

我想获取此 URL 的内容,但问题是 file_get_contents 内容将 & 转换为 &

http://a810-bisweb.nyc.gov/bisweb/PropertyProfileOverviewServlet?boro=3&houseno=512&street=bedford%20ave&requestid=0&s=A03C41B885B461E4F46BD08866A7430E

这行不通。

$url = "http://a810-bisweb.nyc.gov/bisweb/PropertyProfileOverviewServlet?boro=3&houseno=512&street=bedford%20ave&requestid=0&s=A03C41B885B461E4F46BD08866A7430E";
$content = file_get_contents($url);
echo $content;

它产生错误。

$url = "http://www.google.com";
$content = file_get_contents($url);
echo $content;

它工作正常。

没有为请求设置 User-Agent,我收到 403 禁止错误。

此代码有效:

<?php

$url = "http://a810-bisweb.nyc.gov/bisweb/PropertyProfileOverviewServlet?boro=3&houseno=512&street=bedford%20ave&requestid=0&s=A03C41B885B461E4F46BD08866A7430E";

$opts = array(
    'http' => array('header' => 'User-Agent: test'),
);

$ctx = stream_context_create($opts);

$content = file_get_contents($url, false, $ctx);
var_dump($content);

看起来该网站默认不允许 PHP 用户代理,因此您需要使用流上下文指定一个用户代理或使用其他库(如 cURL)来获取内容。

这是尝试使用 file_get_contents 获取远程 URL 时的常见问题。