2011-07-20 23 views
0

以下はコードです。それはまったくGoogleカレンダーを開いていないようです。私はそれが私が使用しているURLと何かを持っていると信じて、そしておそらく特別な性格を持っています。私は以下のようになります。私の知る限りではphpのdomdocumentを使ってGoogleカレンダーから情報を取得する

Warning: DOMDocument::loadHTMLFile() [domdocument.loadhtmlfile]: I/O warning : failed to load external entity "https://www.google.com/calendar/feeds/[email protected]/public/basic" on line 4 

<? 
$dom = new DOMDocument(); 
$feed = "https://www.google.com/calendar/feeds/[email protected]/public/basic"; 
$html = $dom->loadHTMLFile($feed); 
$dom->preserveWhiteSpace = true; 
$entries = $dom->getElementsByTagName("entry"); 


foreach ($entries as $entry) 
{ 

    $status = $entry->getElementsByTagName("eventStatus"); 
    $eventStatus = $status->item(0)->getAttributeNode("value")->value; 

    if ($eventStatus == $confirmed) 
{ 
     $titles = $entry->getElementsByTagName("title"); 
     $title = $titles->item(0)->nodeValue; 

     $times = $entry->getElementsByTagName("when"); 
      $startTime = $times->item(0)->getAttributeNode("startTime")->value; 
      $when = date("l jS \o\f F Y - h:i A", strtotime($startTime)); 

      $places = $entry->getElementsByTagName("where"); 
      $where = $places->item(0)->getAttributeNode("valueString")->value; 

      print $title . "\n"; 
      print $when . " AST\n"; 
      print $where . "\n"; 
      print "\n"; 
     } 
    } 
?> 

答えて

0

DOMDocument::loadHTMLFile()はSSLを交渉することが可能であるが、それは失敗している場合は、文字列に最初のファイルを読むためにfile_get_contents()を試みる場合があります。

$dom = new DOMDocument(); 
$feed = "https://www.google.com/calendar/feeds/[email protected]/public/basic"; 
$feed_string = file_get_contents($feed); 
$html = $dom->loadHTMLFile($feed_string); 

これは完全に投機的です。それをそのまま扱う。

EDITallow_url_fopenがphp.iniで有効になっていることを確認してください。

+0

警告:file_get_contents(https://[email protected]/public/basic)[function.file-get-contents]:ストリームを開くことに失敗しました:/ home/timeline/public_htmlにそのようなファイルやディレクトリはありません/getEventsFromCalendar.php on Line 4あなたの提案した変更を行うと、これが表示されます。 –

+0

@joe Hughes私はその問題はありません。 'file_get_contents()'でURLを読むことができるので、ネットワークに問題があるか、PHPがネットワークに接続できません。 –

+0

@joe Hughes php.iniで 'allow_url_fopen'がオンになっていることを確認してください。 –

関連する問題