PHP:rawurlencode不能正常工作

时间:2014-01-02 18:47:11

标签: php urlencode

这就是链接的样子:

<a href='?title=rawurlencode($title)'><h3>$title</h3></a>

PHP代码:

<?php
  error_reporting(E_ALL ^E_NOTICE);

    $title = $_POST['title'].";";
    $betyg = $_POST['betyg'].";";
    $imdb = $_POST['imdb'].";";
    $bild = $_POST['bild'].";";
    $desc = $_POST['handling'].";";
    $send = $_POST['laggTill'];
    $file = 'filmer.txt';
    $doc = file_get_contents($file);

    if(isset($_POST['laggTill']))
    {
      $f = @fopen ($file,"a");
      $nyFilm = PHP_EOL.$title.$betyg.$imdb.$bild.$desc;
      fwrite($f,$nyFilm);
      fclose($f);
        echo "<h2>Filmer</h2>";
        $lines = explode("\n",$doc);
        foreach ($lines as $newlines)
        {
          list($title,$betyg,$imdb,$bild,$desc) = explode(";",$newlines);
          echo "
            <div class='thumbNail'><a href='?title=rawurlencode($title)'><h3>$title</h3></a><img class='cover' src='$bild' alt='$title'
            title='$title'/><br><span class='rating'>";?>
          <?php
          for($i = 0; $i<$betyg; $i++)
          {
            echo "<img src='./star.png' alt=''/>";
          }?>
          <?php echo"</span></div>";
        }
    }
    else
    {
      if(isset($_GET['title']))
      {
        $searchfor = $_GET['title'];
        $pattern = preg_quote($searchfor, '/');
        $pattern = "/^.*$pattern.*\$/m";
        if(preg_match_all($pattern, $doc, $matches))
        {
          $movie = implode ("\n",$matches[0]);
          list($title,$betyg,$imdb,$bild,$desc) = explode(";",$movie);
          echo "
            <div class='info'>
            <a class='imdb' href='$imdb' target='_blank'><img src='./imdb.png' alt=''/></a>
            <img class='cover' src='$bild' alt='$title' title='$title'/><br>
            <span class='rating'>
          ";?>
          <?php
          for($i = 0; $i<$betyg; $i++)
          {
            echo "<img src='./star.png' alt=''/>";
          }?>
          <?php echo"</span></div>
            <div id='desc'>
            <h2>$title</h2>
            <p class='desc'>$desc</p>
            </div>";
        }
        else
        {
          echo "No matches found";
        }
      }
      else
      {
        echo "<h2>Filmer</h2>";
        $lines = explode("\n",$doc);
        foreach ($lines as $newlines)
        {
          list($title,$betyg,$imdb,$bild,$desc) = explode(";",$newlines);
          echo "
            <div class='thumbNail'><a href='?title=$title'><h3>
            $title</h3></a><img class='cover' src='$bild' alt='$title'
            title='$title'/><br><span class='rating'>";?>
          <?php
          for($i = 0; $i<$betyg; $i++)
          {
            echo "<img src='./star.png' alt=''/>";
          }?>
          <?php echo"</span></div>";
        }
      }
    }
?>

HTML code:

<!doctype html>
<html lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
    <link rel="stylesheet" href="css/style.css" type="text/css"/>
    <link rel="stylesheet" href="css/films.css" type="text/css"/>
    <title>Film PHP</title>
</head>
  <body>

    <div id="content">

      <header id="header">
        <h1 id="title">Min Filmsamling</h1>
        <nav id="menyBar">
          <?php include_once('pages/navigeringBar.php'); ?>
        </nav>
      </header>
      <section id="filmer">
          <form action="nyFilm.php" method="post" id="nyFilm">
        <div id="info"></div>
        <fieldset>
        <legend><h4>Lägg till ny film </h4></legend>
        <label for="title">Titel:</label><br/>
        <input type="text" class="text" name="title" id="movieTitle"/><br/>
        <label for="betyg">Betyg:</label><br/>
        <select name="betyg" id="betyg"><br/>
          <option value="0">Välj betyg här:</option>
          <option value="1">1</option>
          <option value="2">2</option>
          <option value="3">3</option>
          <option value="4">4</option>
          <option value="5">5</option>
        </select><br/>
        <label for="imdb">Länk till imdb:</label><br/>
        <input type="text" class="text" name="imdb" id="imdb"/><br/>
        <label for="bild">Länk till bild:</label><br/>
        <input type="text" class="text" name="bild" id="bild"/><br/>
        <label for="handling">Filmens handling:</label><br/>
        <textarea name="handling" class="text" id="handling"></textarea><br/>
        <input type="submit" class="buttons" value="Lägg till film" name="laggTill" id="laggTill"/>
      </fieldset>
      </form>
          <div id="movie">
            <?php include_once('nyFilm.php');?>
          <div class="clear"/>
        </div>
      </section>
    </div>
  <!--scripts-->
  <script type="text/javascript" src="js/jquery.min.1.10.2.js"></script>
  <script type="text/javascript" src="js/nyfilm.js"></script>
  </body>    

这是文本文件:

Public Enemie;5;http://www.imdb.com/title/tt1152836/;http://ia.media-imdb.com/images/M/MV5BMjA3NDI0NzM2MV5BMl5BanBnXkFtZTcwODk5MTk2Mg@@._V1_SX214_.jpg;Historien utspelar sig under brottsvågens år 1933-34 när gangsterlegenderna John Dillinger, Baby Face Nelson och Pretty Boy Floyd härjade fritt i USA. Regeringen försök att stoppa dem ledde till att J. Edgar Hoover tillsatte Melvin Purvis för att leda den ökända jakten på Dillinger som förvandlade FBI till landets första federala poliskår.;
Gangster Squad;3;http://www.imdb.com/title/tt1321870/;http://ia.media-imdb.com/images/M/MV5BMTcwMjAyMTUzMl5BMl5BanBnXkFtZTcwODgxNzk1OA@@._V1_SY317_CR0,0,214,317_.jpg;Mot slutet av 1940-talet kontrolleras Los Angeles helt av maffialedaren Mickey Cohen. För att förgöra Cohens imperium tillsätts en hemlig styrka inom LAPD ledd av Sgt. John O'Mara och Jerry Wooters som måste ta till alla metoder för att befria staden från en av de farligaste maffiorna genom tiderna.;
The Tourist;5;http://www.imdb.com/title/tt1243957/;http://ia.media-imdb.com/images/M/MV5BMTMyMzc3OTkwMV5BMl5BanBnXkFtZTcwMjc0MTgwNA@@._V1_SX214_.jpg;Under en improviserad resa till Europa för att laga ett brustet hjärta snubblar Frank oväntat in i ett flirtigt möte med Elise, en extraordinär kvinna som medvetet har korsat hans väg. Med det hisnande vackra Venedig som bakgrund utvecklas deras romans snabbt och omedvetet och snart befinner de sig i en dödligt katt och råtta-lek.;
The Hunger Games;5;http://www.imdb.com/title/tt1392170/;http://ia.media-imdb.com/images/M/MV5BMjA4NDg3NzYxMF5BMl5BanBnXkFtZTcwNTgyNzkyNw@@._V1_SX214_.jpg;Varje år direktsänds Hunger Games som en av de största mediala händelserna. Från varje distrikt lottas två ungdomar mellan tolv och arton ut att delta i tävlingen. De skickas omedelbart till huvudstaden där de ska stylas, tränas och visas upp i direktsända intervjuer, för att sedan delta i spelet där bara en vinner – den som överlever. Katniss Everdeen är sexton år. Hon älskar sin lillasyster Prim över allt annat, och försöker skydda henne från allt hemskt i distrikt tolv, men mot Hungergames har hon inget skydd. När det är Prims namn som dras i lottningen ser Katniss ingen annan utväg än att själv ta Prims plats i spelen. Baserad på romanen "The Hunger Games" av Suzanne Collins från år 2008.;
The Avenger;3;http://www.imdb.com/title/tt0848228/;http://ia.media-imdb.com/images/M/MV5BMTk2NTI1MTU4N15BMl5BanBnXkFtZTcwODg0OTY0Nw@@._V1_SY317_CR0,0,214,317_.jpg;En brokig skara individer med superkrafter samlas ihop av den hemliga organisationen S.H.I.E.L.D. för att skydda planeten mot invaderande styrkor från yttre rymden. Tillsammans bildar de motvilliga superhjältarna gruppen The Avengers.;

使用rawurlencode,它看起来应该是这样的:

公共%20Enemie

但它仍然看起来像这样: Public Enemie

知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

在任何想象中,这都不是有效的语法。

如果这是某种模板文件,您需要执行以下操作:

<a href='?title=<?php echo rawurlencode($title) ?>'><h3><?php echo $title ?></h3></a>

如果你直接通过PHP输出,那么该行可能实际上就像:

echo "<a href='?title=rawurlencode($title)'><h3>$title</h3></a>";

在这种情况下需要成为:

echo "<a href='?title=" . rawurlencode($title) . "'><h3>$title</h3></a>";