【问题标题】:Very Weird PHP Echo Error非常奇怪的 PHP Echo 错误
【发布时间】:2013-03-17 09:41:04
【问题描述】:

我正在尝试回显通过 Netflix API 生成的 URL。 URL 保存在变量 $movieid 中,当 'echo $movieid;'输入它可以工作。我需要从 PHP 和 Netflix 提供的 JavaScript 中获取价值,这就是我遇到问题的地方。

假设我有 titleID = 7474747 。当我输入以下代码时:

$movieid = "http://api.netflix.com/catalog/movie/".$titleID;
echo $movieid;

我得到以下输出:

[http]://api.netflix.com/catalog/movie/7474747

但是当使用下面的代码时:

<div id="myMovieLocation">
  <?php echo "<img src=\"$img\" />"; ?>
  <script src="[http]://jsapi.netflix.com/us/api/js/api.js">
  {
   "title_id" : "<?php print $movieid; ?>",
   "button_type" : ["PLAY_BUTTON", "ADD_BUTTON"],
   "show_logo" : "true",
   "x" : "40",
   "y" : "20",
   "dom_id" : "myMovieLocation",
   "application_id" : "<?php echo $apiKey; ?>"
   }
   </script>

对于 $movieid,我没有得到相同的输出。快速查看源代码始终显示原始 URL,没有附加数字,如下所示:

"title_id" : "[http]://api.netflix.com/catalog/movie/",

除此之外,其他一切都很好。我尝试过回显、打印、不同的变量名,但似乎没有任何效果。

感谢您的帮助。

【问题讨论】:

  • 作为补充,我尝试了 "title_id" : "api.netflix.com/catalog/movie/<?php echo $titleID; ?>" 仍然无法附加数字。
  • 为什么您的脚本源在[http] 括号中?还是有什么我不知道的?你试过没有http周围的括号吗?
  • 我在一个文件中不能有超过 2 个链接,这似乎停止了投诉。抱歉没有提及。
  • 那么,我认为你在没有括号的情况下尝试过(?)
  • 尝试将串联从$movieid = "http://api.netflix.com/catalog/movie/".$titleID; 更改为$movieid = "http://api.netflix.com/catalog/movie/" . $titleID;,也许没有空格可能是问题所在。连接中通常有空格。

标签: php echo netflix


【解决方案1】:

只需更改自己的代码,str_replace("[http]", "http://", $movie_id);

如果你输入var_dump($movie_id);,你会得到什么?分享结果....

试试这个:

"title_id" : \"&lt;?php print $movieid; ?&gt;\",

如果您收到NULL 或什么都没有,返回变量$movie_id 的结果有问题吗?

尝试转换为字符串,我认为您收到 INT 所以它无法解析示例:

echo (string) $movie_id;

或者使用strval()确保你是整数转换成字符串:

echo strval($movie_id);

由于错误:Output from "title_id" : \"&lt;?php print $movieid; ?&gt;\" is: "title_id" : \"api.netflix.com/catalog/movie\",

放入PHP代码":

"title_id" : <?php print 'http://"'.$movieid.'"/'.$title_id; ?>,

或者换一种方式,使用 PHP 解析 json_encode:

<div id="myMovieLocation">
  <?php echo "<img src=\"$img\" />"; ?>
  <script src="[http]://jsapi.netflix.com/us/api/js/api.js">
  {
    <?php

    $movie_id_result = (string)$movieid;

    $a = array
    ("title_id" => "http://api.netflix.com/catalog/movie/".$movie_id_result,
     "button_type" => "[\"PLAY_BUTTON\", \"ADD_BUTTON\"]",
     "show_logo" => "true",
     "x" => "40",
     "y" => "20",
     "dom_id" => "myMovieLocation",
     "application_id" => $apiKey
    );

    echo json_encode($a, JSON_UNESCAPED_SLASHES);
    ?>
  }
  </script>

并在返回PHP结果时注意:

titleID = 7474747 其中7474747 可以是整数 (INT)。当您转换为 JSON 时,请确保它是使用 strval() 的字符串,或者在变量之前简单地添加 (string)。整数作为结果可能会使 json 解析器感到困惑。

适用于 PHP 的 Neflix API

如果这还没有解决,请使用来自source 的用于 netflix 的 PHP API 作为 PHP 示例。

【讨论】:

  • var_dump 返回空格字符 echo 返回 URL
  • var_dump($movie_id) 返回NULL/(nothing) 所以你不会返回结果。
  • “title_id”的输出:\“\”是:“title_id”:\“api.netflix.com/catalog/movie\”,
  • 所以,您没有收到 ID,也没有添加 http:。
  • 或者被解析器混淆(javascript被"字符串混淆)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-04
相关资源
最近更新 更多