HTML表单,php和撇号

sro*_*den 3 html php forms apostrophe

使用HTML,XML和php 5.3(无SQL)进行单一分配.建立一个评论网站.我有一个textarea,用户可以在其中发表评论.如果用户输入撇号,例如World's Best Uni !,当我回复$ _REQUEST ['reviewtext']时,我会得到World's Best Uni!

要按摩数据以保存XML,我有以下代码:

$cleantext1 = htmlspecialchars($_REQUEST['reviewtext']);
substr_replace($cleantext1,"\'","'");
$cleantext2 = strip_tags($cleantext1);
$cleantext3 = utf8_encode($cleantext2);
Run Code Online (Sandbox Code Playgroud)

我在每一步都有回音,这句话仍然是世界上最好的大学!在每一步.我期望前两行中的一行用html代码替换转义的撇号,但它似乎不起作用.

有趣的是,这个问题不会发生在我的本地XAMPP服务器上; 仅限我托管的网站.

有什么建议?谢谢,肖恩

dre*_*010 8

你正在经历的是PHP的魔术引号功能,它可以自动转发来自GET,POST,COOKIE的输入.依赖于这个功能是不明智的,并且从PHP 5.3开始就被弃用,并且在大多数配置中都会默认为关闭(但不会在你的Uni配置中).

您可以使用get_magic_quotes_gpc()来确定是否已打开,如果是,则取消对数据的删除.

if (get_magic_quotes_gpc()) {
    $val = stripslashes($_POST['val']);
} else {
    $val = $_POST['val'];
}
Run Code Online (Sandbox Code Playgroud)

魔术引号引用进入更详细的历史,用途,以及如何处理与魔术引号.

另外,在输出数据时,请务必将其转义(例如htmlspecialchars(),当您处理来自任何不受信任来源的输入时,请务必对其进行过滤(例如addslashes(),mysql_real_escape_string()).