PHP の単純な html dom パーサーを使用して Web ページを取り込もうとしていますが、奇妙な問題が発生しています。2 つの文字列を連結して url 変数を定義しています。
$itemUrl="http://www.example.com/";
$pageUrl="default.asp?pg=DispSingleItem&ItemNumber=1234";
$itemUrl .=$pageUrl;
$html=file_get_html($itemUrl);
このスクリプトを実行すると、「アイテムが見つかりません」というページが表示されます。しかし、$itemUrl をエコーし、出力をコピーしてブラウザーに貼り付けると、探しているページに直接移動します。また、最初に 1 つの文字列として保存された URL 全体を配置すると、正しい Web ページに移動します。
$itemUrl="http://www.example.com/default.asp?pg=DispSingleItem&ItemNumber=1234";
$html=file_get_html($itemUrl);
連結された文字列で urlencode を使用しようとしましたが、それは役に立ちません。私は本当に困惑しています。直接コピーして別の変数に貼り付けた同じ URL が正しいページに移動するときに、連結された URL が別のページに移動する理由が思いつきません。ここで何が欠けていますか?どんな助けでも素晴らしいでしょう、ありがとう。
編集:問題が見つかりました。$pageUrl のエコーはこれを示しました:
default.asp?pg=DispSingleItem&ItemNumber=1234
実際には、変数が次のような文字列を保存していた場合:
default.asp?pg=DispSingleItem&ItemNumber=1234
私のブラウザは、 & amp; を自動的に翻訳していました。単純に & に変更しました。これはまさに私が必要としていたものに似ていました。ただし、file_get_html を実行するたびに文字列が変換されなかったため、スクリプトは & amp; を含む URL から文字列を取得しようとしていました。だけでなく &。追加した:
$pageUrl=preg_replace("/amp;/", "", $pageUrl);
私の問題で起こったように変数を変更せずに、ブラウザに変数を正確に出力させる方法を知っている人はいますか? 知っておくと今後に役立ちます。
すべての回答に感謝します。私はそれほど多くまたはそれほど早く期待していませんでした。