2

file_get_contents($url);当我从浏览器地址栏中复制 URL 时,我想获取一个 URL 内容,如下所示:

  $url="http://www.mashadhome.com/fa-estate-39855-tags-%D9%81%D8%B1%D9%88%D8%B4-%D8%A2%D9%BE%D8%A7%D8%B1%D8%AA%D9%85%D8%A7%D9%86-%D8%A8%D9%84%D9%88%D8%A7%D8%B1%20%D8%B5%DB%8C%D8%A7%D8%AF%20%D8%B4%DB%8C%D8%B1%D8%A7%D8%B2%DB%8C";

但是当我使用自动获取网址时

$homepage1 = file_get_contents($url_value);
$doc1 = new DOMDocument;
$doc1->preserveWhiteSpace = false;
@$doc1->loadHTML($homepage1);
$xpath1 = new DOMXpath($doc1);

$nodes1 = $xpath1->query("//html/body/section/div/div/section/figure/a");
$href = $node1->getAttribute('href');

它是这样的:

$href="http://www.mashadhome.com/fa-estate-39855-tags-فروش-آپارتمان-بلوار صیاد شیرازی";

我使用上面的代码来获取此链接的内容,但file_get_contents($href)不适用于第二个 URL,或者当我将第二个地址复制到浏览器时它工作得很好;

所以问题是这样的:为什么第二个地址不起作用?如何将第一个地址转换为第二种类型?

4

1 回答 1

2

Url 可以接受受限制的字符集,即 ASCII 字母、数字、连字符。要访问这样的 url,它需要被编码为您的服务器接受的格式,就像在您的第一个示例中一样。看看urlencode()函数。

当然,您只需要在不是 url 特殊字符(如:, /)的部分上使用 urlencode。fa-estate-39855-tags-فروش-آپارتمان-بلوار صیاد شیرازی在这种情况下,您将仅在零件上使用 urlencode 。

于 2014-08-21T07:42:39.167 回答