0

我有一个包含多个电影概要的数据库 - 这些是通过电子邮件发送给我的文本块,我将其复制粘贴到我的数据库中。我现在正试图用一个简单的 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 部分崩溃——因为那是文本最多的部分,因此“有问题的”字符出现次数最多。

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

4

2 回答 2

2

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>";
}
于 2012-05-31T21:33:12.517 回答
0

尝试这个:

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

于 2013-12-16T09:17:45.310 回答