转义输入值中的双引号

时间:2014-07-10 14:31:48

标签: php

我有一个输入字段,其中PHP中回显的值使用UTF-8字符集进行编码

<input value="<?php echo html_entity_decode($data["title"]); ?>" type="text">

样本值:

  

“पीलासिताराపసుపునక్షత్రంyellow star!”

文本中出现的双引号会阻止显示该值。

我试过这个,但它没有用。

<input name="title" id="title" value="<?php echo htmlspecialchars_decode(html_entity_decode($data["title"])); ?>"  class="width9" type="text"> type="text">

2 个答案:

答案 0 :(得分:4)

问题是你做错了。您尝试解码编码的字符串。但是你必须对字符串进行编码。

所以你需要

htmlspecialchars($data["title"])

而不是

htmlspecialchars_decode($data["title"])

因为htmlspecialchars_decode()解码了htmlspecialchars编码的字符串。

答案 1 :(得分:0)

htmlspecialchars($ string)应该可以工作,所以应该htmlspecialchars($ string,ENT_QUOTES,&#34; UTF-8&#34;)和htmlentities($ value,ENT_COMPAT,&#34; UTF-8&#34;)

我想知道你的问题实际上并不是你没有在最后一页中指定元字符集

一些代码供您测试

<?php

if(empty($_POST['string_to_process'])) { $string = "enter your string"; } else { $string = $_POST['string_to_process']; }

?>

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="content-type" content="text/html;charset=utf-8" />
    </head>
    <body>
        <form action="/encoding.php" method="POST">
            <input type="text" name="string_to_process" />
            <input type="submit" value="submit">
        </form>

        RESULTS:
        WITHOUT ESCAPING : <input type="text" value="<?php echo($string) ?>" /><br />
        FOR htmlspecialchars($string): <input type="text" value="<?php echo(htmlspecialchars($string)) ?>" /><br />
        FOR htmlentities($string): <input type="text" value="<?php echo(htmlentities($string)) ?>" /><br />
        FOR htmlspecialchars($string,ENT_QUOTES,"UTF-8"): <input type="text" value="<?php echo(htmlspecialchars($string,ENT_QUOTES,"UTF-8")) ?>" /><br />
        FOR htmlentities($value, ENT_COMPAT, "UTF-8"): <input type="text" value="<?php echo(htmlentities($string, ENT_COMPAT, "UTF-8")) ?>" /><br />

    </body>
</html>

希望它有助于家伙,编码可能是一种痛苦

编辑:

是的,我只是在没有

的情况下尝试过
<meta http-equiv="content-type" content="text/html;charset=utf-8" />

它搞砸了,包括上面所有都将是桃子

TH