0

xml を読み取る必要がありますが、これだけを読み取る別の方法が見つかりません。$movie とこれをハードコーディングしただけで、次のエラー メッセージが表示されます。

Warning: file_get_contents(http://news.google.com.mx/news?hl=es&gl=mx&q=harry potter&bav=on.2,or.r_gc.r_pw.r_cp.r_qf.,cf.osb&um=1&ie=UTF-8&output=rss) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.0 400 Bad Request

このエラーが発生しました。これが私のコードです。エラーは URL にあり、誰かが助けてくれます。修正方法は???

$url = 
$data = file_get_contents('http://news.google.com.mx/news?hl=es&gl=mx&q='.$movie.'&bav=on.2,or.r_gc.r_pw.r_cp.r_qf.,cf.osb&um=1&ie=UTF-8&output=rss');

$xml = new SimpleXMLElement($data);
$channel = array();
$channel['title'] = $xml->channel->title;

foreach ($xml->channel->item as $item)
{

    //echo $article['title'] = $item->title;
    //echo $article['link'] = $item->link;
    echo $article['pubDate'] = $item->pubDate;
    echo $article['description'] = (string) trim($item->description);

}
4

2 に答える 2

2

URL パラメータ (つまり)をurlencode() すると$movie、期待どおりに動作するはずです。

例:

$data = file_get_contents('http://news.google.com.mx/news?hl=es&gl=mx&q='. urlencode($movie) .'&bav=on.2,or.r_gc.r_pw.r_cp.r_qf.,cf.osb&um=1&ie=UTF-8&output=rss')
于 2012-04-23T01:34:10.277 に答える
2

$movieを urlencode でラップする必要があります。そのフィードで使用される UTF-8 エンコーディングを指定し、英語以外の文字のテキストを適切にレンダリングできるように、コンテンツ タイプ ヘッダーも追加しました。

<?php

header('Content-Type:text/html;charset=utf-8');

$movie = 'harry potter';
$url = 
$data = file_get_contents('http://news.google.com.mx/news?hl=es&gl=mx&q='.urlencode($movie).'&bav=on.2,or.r_gc.r_pw.r_cp.r_qf.,cf.osb&um=1&ie=UTF-8&output=rss');

$xml = new SimpleXMLElement($data);
$channel = array();
$channel['title'] = $xml->channel->title;

foreach ($xml->channel->item as $item)
{
    //echo $article['title'] = $item->title;
    //echo $article['link'] = $item->link;
    echo $article['pubDate'] = $item->pubDate;
    echo $article['description'] = (string) trim($item->description);
}

?>
于 2012-04-23T01:38:51.833 に答える