php - 为什么从 textarea 发送的内容被算作两个字母?

标签 php html

header("Content-type:text/html; charset=utf-8");

$space = "( )";
$test_string = str_replace(" ", " ", $space);

if($_POST["submit"] === "yes")
{
    var_dump($space); echo md5($space);
    echo"<br>";
    var_dump($_POST["box1"]); echo md5($_POST["box1"]);
    echo"<br>";
    var_dump($test_string); echo md5($test_string);
    echo"<br>";
}

$echo = "<form method='post'>".
"<input type='hidden' name='submit' value='yes'>".
"<textarea name='box1'>".$test_string."</textarea><input type='submit' value='SUBMIT'>".
"</form>";
echo"$echo";

如果我点击上面代码中的“提交”按钮,我将得到以下输出:

string(3) "( )" 847f697fc150ec24253d12927fe41b75
string(4) "( )" 63679d6d8c5ac6713be008a28ee19616
string(8) "(&nbsp;)" 742fcb328936485cdd13530f39c11bc6

空白字符被计算为单个字符并输出到string(3)

 计算为6个字符并输出到string(8)

顺便说一句,从textarea发送的 被计算为两个字符并输出到string(4)。即使我将 md5() 放在该值上,它也会打印出与 string(3) 情况不同的值。

一开始我以为是编码问题,我把header()部分删掉了,但问题还是出现。

为什么会发生这种情况?

最佳答案

  HTML 实体由浏览器的 HTML 解析器解释并转换为实际的 U+00A0 NO-BREAK SPACE Unicode 字符。然后将其发送到以 UTF-8 编码为字节 C2 A0 的服务器。一个字符,两个字节。

关于php - 为什么从 textarea 发送的内容被算作两个字母?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45066412/

相关文章:

javascript - 如何在页面刷新后反转按位操作以标记复选框

php - 如何从 Doctrine Fixture 引用中获取实体?

html - 背景附件 : fixed - Reverse scroll?

php - 在 XML PHP 中添加子项作为列名和列值

php - "PDO exception: php_network_getaddresses: getaddrinfo failed"更改 DNS 解析器后,数据库在 AWS 上运行

php - 从返回 "outer"数组的多个循环创建 1 "inner"数组

javascript - 单击缩略图时图像未显示在模式中

javascript - 嵌入 3D 模型查看器

php - 我怎样才能加快 Bootstrap 工具提示

html - CSS动画后链接不起作用