从URL获取结果所需的HTML空间

时间:2013-05-04 17:13:05

标签: php

我的代码中存在问题

<?php
$con=mysqli_connect("localhost","test","test","test");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

$result = mysqli_query($con,"select movie_name from jos_movie");
while ($row = mysqli_fetch_array($result)){
        $movie_name= $row['movie_name'];
        $xmls = simplexml_load_file("http://api.themoviedb.org/2.1/Movie.search/en/xml/myapi/$movie_name");
        foreach($xmls->movies->movie as $movies){
        $arrMovie_id= $movies->id;  
      }
          echo $arrMovie_id;
    }
?>

如果您看到我正在传递网址以获取电影ID的结果。当电影具有单一名称时,例如&#34; Ironman&#34;它获取正确的电影ID&#34; 10505&#34;如果电影名称是&#34; Ironman 2&#39;它不会工作,并提供错误的ID。 但是,如果我将movie_name作为&#34; ironman%202&#34;它取得了正确的结果。我怎样才能解决空间问题。从数据库中获取&#34; ironman 2&#34;

我试过了

while ($row = mysqli_fetch_array($result)){
        $movie_name= urlencode($row['movie_name']);
        $xmls = simplexml_load_file('http://api.themoviedb.org/2.1/Movie.search/en/xml/myapi/'.$movie_name);

while ($row = mysqli_fetch_array($result)){
        $movie_name= rawurlencode($row['movie_name']);
        $xmls = simplexml_load_file('http://api.themoviedb.org/2.1/Movie.search/en/xml/myapi/'.$movie_name);

它不起作用:(

由于

2 个答案:

答案 0 :(得分:1)

您应该使用urlencode

$movie_name = urlencode($row['movie_name']);
$xmls = simplexml_load_file('http://api.themoviedb.org/2.1/Movie.search/en/xml/myapi/'.$movie_name);

编辑:

如果你只想得到第一个(并且有效的)获取结果,那么在foreach循环中打破一个条件(我想检查id是否是一个整数就足够了):

<?php
$con=mysqli_connect("localhost","test","test","test");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

$result = mysqli_query($con,"select movie_name from jos_movie");
while ($row = mysqli_fetch_array($result)){
        $movie_name = rawurlencode(trim($row['movie_name']));
        $xmls = simplexml_load_file("http://api.themoviedb.org/2.1/Movie.search/en/xml/myapi/$movie_name");
        foreach($xmls->movies->movie as $movies){
            $arrMovie_id = $movies->id;
            if ($arrMovie_id && is_int($arrMovie_id)) break;
        }
        echo $arrMovie_id;
    }
?>

答案 1 :(得分:0)

你可以尝试这些方法:

$movie_name = urlencode($row['movie_name']);

那应该将空格转换为%20。此外,如果电影标题中有任何非字母数字值,也应对它们进行编码。