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

しかし、私が自動的にURLを取得すると

$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)2 番目の URL では機能しません。2 番目のアドレスをブラウザーにコピーしてもうまく機能します。

質問はこれです: 2 番目のアドレスが機能しないのはなぜですか? 最初のアドレスを2番目のタイプに変換する方法は?

4

1 に答える 1

2

URL は、制限された文字セット、つまり ASCII 文字、数字、ハイフンを受け入れることができます。このような URL にアクセスするには、最初の例のように、サーバーが受け入れる形式にエンコードする必要があります。urlencode()関数を見てください。

もちろん、url の特殊文字 ( :, など/) ではない部分にのみ urlencode を使用する必要があります。この場合、fa-estate-39855-tags-فروش-آپارتمان-بلوار صیاد شیرازیパーツのみに urlencode を使用します。

于 2014-08-21T07:42:39.167 に答える