来自textarea的额外角色

时间:2016-06-04 16:51:52

标签: php html textarea

我有两个这样的页面:

的test.html

<!DOCTYPE html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script>
</head>

<body>
<form method="POST" action="test2.php">
    <textarea id="input" name="input" cols="100px" rows="15" wrap="soft" placeholder="put input here"></textarea>
    <button type="button" onclick="getLength()">Get length </button><p id="length"> </p></div>
    <br >
    <input type="submit">
</form>

<script>
function getLength(){
    var len=$('textarea').val().length;
    $('#length').text(len);
}
</script>
</body>
</html>

和test2.php

<?php
echo strlen($_POST['input']);
?>

当我输入一些输入时,例如:"aa[pressEnter]aa",它应该在test2.php页面回显5,但它会反过来。

那么为什么它是6(什么是额外的角色)?

感谢阅读!

1 个答案:

答案 0 :(得分:1)

返回被视为chrome中的额外字符。

实际上返回的是2个转义字符\ r \ n。在chrome中它需要一个字符(idk为什么),在edge中它需要2个字符所以aa [enter] aa总计最多6个字符

编辑:有两个部分,一个是js修复删除回车,一个是PHP修复

js修复html文件

<!DOCTYPE html>
<head>

</head>

<body>
<form method="POST" action="test2.php">
    <textarea id="input" name="input" cols="100px" rows="15" wrap="soft" placeholder="put input here"></textarea>
    <button type="button" onclick="getLength()">Get length </button><p id="length"> </p></div>
    <br >
    <input type="submit">
</form>

<script>
function getLength(){

    var fixedText = $('textarea').val();

    fixedText = fixedText.replace(/(\r\n|\n|\r)/gm, "");

    var len=fixedText.length;

    $('#length').text(len);
}
</script>
</body>
</html>

php fix

<?php

    $data = str_replace("\r\n",'',$_POST['input']);
    echo strlen($data);

?>

你只需要用“”替换返回车厢\ r \ n,\ r和\ n。