電子書籍の厳選無料作品が豊富!

$strTextA = file_get_contents($url);
とした場合に例えば
$actor = '俳優の名前' ;
$url = 'http://hogehoge.org/wiki/' . urlencode( $actor ) ;
とすると、そのページを入手できますが、さらに_や()がついているページ
$url = 'http://hogehoge.org/wiki/' . urlencode( $actor . '_(俳優)') ;
とすると、ページは存在するのにそのページを入手することができません。
(wikiなどでよく俳優さんは曖昧性排除の為に
後ろにXXX_(俳優) というURL表記になっていてますが、これを入手したい)
特に2つのページに差がある訳でもなさそうなので
urlの指定の仕方に問題があると思ってます
括弧やアンダーラインなどの処理でurlencodeに加えて
何かやり方があれば、教えてください

A 回答 (1件)

見た感じ大丈夫なような気がしますが


なにか根本的な見落としはありませんか?

<?PHP
$u1="http://ja.wikipedia.org/wiki/%E7%94%B0%E6%9D%91% …
$u2="http://ja.wikipedia.org/wiki/".urlencode("田村亮_(俳優)");
print $u1===$u2?"OK":"NG";;

この回答への補足

yambejpさん
早速のご回答ありがとうございます。
確かにurlencodeした文字列$u2は、こちらの環境でも$u1と一致します。
しかし、その$u1もしくは$u2をfile_get_contentsしようとすると
HTTP/1.0 403 Forbiddenといわれます。手入力では、そのHomepageにアクセスできます。

具体的例では
<?php
$actor = "森雅之" ;
echo "役者:" . $actor;
$urlA = 'http://ja.wikipedia.org/wiki/' . urlencode( $actor ) ;
$urlB = 'http://ja.wikipedia.org/wiki/' . urlencode( $actor . "_(俳優)") ;

$str = file_get_contents($urlB);
if (!($str)) {
$str = file_get_contents($urlA);
}else{
echo "役者:" . $actor. "_(俳優)" ;
}
として
$urlAも$urlBも存在するHomePageなんですが$urlBは
Warning: file_get_contents(http://ja.wikipedia.org/wiki/%E6%A3%AE%E9%9B%85% … [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.0 403 Forbidden
とはじかれるので、同じwikipediaで片方だけはじかれているし
file_get_contentsの使い方に問題あると考えている訳なのです

補足日時:2012/10/20 05:25
    • good
    • 0
この回答へのお礼

いろいろ試行錯誤してみるも未だに原因の解決には至っておらず
データの入手ができない状況ではありますが、大変勉強になりました
ありがとうございました

お礼日時:2012/11/03 05:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!