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 に答える