2016-06-12 4 views
0

PHP開発の初心者です。最近、いくつかのスクリプトをテストしています。私が作成しようとしましたPHPスクリプトで文字列を表示すると、次のHTMLタグが壊れます

一つのスクリプトは、特定のYouTubeチャンネルの加入者数を取得するものであり、私は次のスクリプトが出ている:

<!DOCTYPE html> 
<html> 
    <head> 
     <title> 
      Test project. 
     </title> 
    </head> 
    <body> 
     <?php 
      $json = file_get_contents('https://www.googleapis.com/youtube/v3/channels?part=statistics&forUsername=Stackoverflow&key={API_KEY}'); 
      $subscribers = json_decode($json); 

      var_export(current($subscribers->items)->statistics->subscriberCount); 

      print '<p>' . $subscribers . "</p>\n"; 
     ?> 
    </body> 
</html> 

しかし、このスクリプトは壊れているようですHTML文書は、ページがロードされるたびにPHPスクリプトの後に来るタグが削除されるためです。

例(私は上記のスクリプトを使用した後のHTML文書をもたらす):

<!DOCTYPE html> 
<html> 
    <head> 
     <title> 
      Test project. 
     </title> 
    </head> 
    <body> 
     '1' 

あなたが見ることができるように、文書は元の文書中に存在し、適切な</body></html>タグで終わっていません。

私はさまざまなツールをオンラインで使用してPHPドキュメントを検証しようとしましたが、問題を把握することはできませんでした。どんな助けもありがとう。

+2

は良いIDEを試してみて、テストサーバーではXdebugをインストールします。良いデバッグツールを使わないでコードを書くのは馬鹿なことです。 – keyboardSmasher

+1

'$ subscribers'はオブジェクトです。オブジェクトには印刷できません。 (自分でクラスを作成し、 '__toString()'メソッドを追加していない限り) –

+0

ああ、 'var_export()'関数の誤解のようです。関数呼び出しを行の先頭から削除し、変数( '$ sub_count')の解消で置き換えると、問題は解決されました。私の終わりの初心者のミス。 –

答えて

1

$subscribersはオブジェクトです。自分でクラスを作成し、__toString()メソッドを追加していない限り、オブジェクトには印刷できません。

これは動作するはずです:

<?php 
    $json = file_get_contents('https://www.googleapis.com/youtube/v3/channels?part=statistics&forUsername=Stackoverflow&key={API_KEY}'); 
    $subscribers = json_decode($json); 

    // Save the value in a variable first 
    $count = current($subscribers->items)->statistics->subscriberCount; 
    print '<p>' . $count . "</p>\n"; 

    // Or use it straight away 
    print '<p>' . current($subscribers->items)->statistics->subscriberCount . "</p>\n"; 
?> 
1

文法の下では間​​違っていると思います。 print '<p>' . $subscribers . "</p>\n";

$ subscribersを格納するための一時的な文字列変数を作成することはどうでしょうか。 ?

関連する問題