php - MySQL 到 PHP 双引号问题

标签 php mysql special-characters data-cleaning

我有一个包含多个电影概要的数据库 - 这些是通过电子邮件发送给我的文本 block ,我将其复制粘贴到我的数据库中。 我现在尝试用一个简单的 PHP 脚本解析它们 - 但我不断收到错误。 我怀疑这是由于文本 block 中的双引号、与号和其他特殊字符造成的 - 那么我该如何清理它?

这是我的代码:

    $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>";
    }

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

有什么方法可以即时清理吗?

最佳答案

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

$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>";
}

关于php - MySQL 到 PHP 双引号问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10841322/

相关文章:

php - 在PHP中加载数据infile不起作用

javascript - 不使用id提交

mysql - 从数据库中的多个表返回数据

mysql - Laravel LastInsertId 与 UUID PK

c++ - 将带有 '\b' 转义字符(退格键)的字符串转换为普通字符串

php - Mysql 将 url 与保存的正则表达式进行匹配

mysql - 表之间的关系需要描述吗?

java - 电子邮件地址中的方括号字符

html - 这个html页面有什么问题?

php - 在 OS X 中将 PhantomJS 作为守护进程运行