MySQL到PHP双引号问题

时间:2012-05-31 21:09:49

标签: php mysql special-characters data-cleansing

我有一个包含多个电影简介的数据库 - 这是通过电子邮件发送给我的文本块,我将其复制粘贴到我的数据库中。 我现在正试图用一个简单的PHP脚本解析它们 - 我一直在收到错误。 我怀疑它是由于双引号,&符号和文本块中的其他特殊字符 - 所以我该如何清理它?

这是我的代码:

    $query = "select * from Films";
    $result = mysql_query($query);

    while($row = mysql_fetch_assoc($result))
    {
        echo "<film>";

            echo "<ID>";
              echo $row['ID'];
            echo "</ID>";

            echo "<FilmName>";
              echo $row['FilmTitle'];
            echo "</FilmName>";

            echo "<FilmGenre>";
              echo $row['FilmGenre'];
            echo "</FilmGenre>";   

            echo "<FilmSynopsis>";
              echo $row['FilmSynopsis'];
            echo "</FilmSynopsis>"; 

        echo "</film>";
    }

我几乎总是在SYNOPSIS部分崩溃 - 因为这是最多的文本,因此最多出现“有问题”的字符。

有没有办法在飞行中清理它?

2 个答案:

答案 0 :(得分:2)

在将内容回显到XML中之前,您需要使用htmlentities($str, ENT_DISALLOWED)来转义内容:

$query = "select * from Films";
$result = mysql_query($query);

while($row = mysql_fetch_assoc($result))
{
    echo "<film>";

        echo "<ID>";
          echo htmlentities($row['ID'], ENT_DISALLOWED);
        echo "</ID>";

        echo "<FilmName>";
          echo htmlentities($row['FilmTitle'], ENT_DISALLOWED);
        echo "</FilmName>";

        echo "<FilmGenre>";
          echo htmlentities($row['FilmGenre'], ENT_DISALLOWED);
        echo "</FilmGenre>";   

        echo "<FilmSynopsis>";
          echo htmlentities($row['FilmSynopsis'], ENT_DISALLOWED);
        echo "</FilmSynopsis>"; 

    echo "</film>";
}

答案 1 :(得分:0)

试试这个:

htmlentities($string, ENT_QUOTES,'UTF-8')