<?
echo $_POST['aaa'].'<br>';
function htmlpost($x){
$x1=array(' ');
$x2=array("&nbsp;");
$x=str_replace($x1,$x2,$x);
return $x;
}
echo $_POST['aaa']=htmlpost($_POST['aaa']);
?>
<form method="post">
  <input name="aaa" type="text" id="aaa" value="<? echo $_POST['aaa']; ?>" />
  <input type="submit" name="Submit" value="提交" />
</form>在输入框输入连续两个以上空白字符
按第一次提交没有问题,空白字符可以转换&nbsp;,但是按第二次提交,空白的字符没有转换为&nbsp;
请问什么原因?

解决方案 »

  1.   

    第二次提交的时候,不改变原来的内容提交,查看浏览器源码就可以看到,空白的字符没有转换为&nbsp;
    这个是bug还是什么原因?
      

  2.   

    第一次提交后已经对空格转义了,第二次提交前你看到的是空格,但实际都源码是&nbsp;了,所以提交的文本里没有了空格。 我猜可能是这样
      

  3.   


    echo $_POST['aaa']=htmlpost($_POST['aaa']);//大哥,你都已经将空格转换后的值赋值给post中的aaa了啊!
      

  4.   

    //第一次提交
    //输入:等等等[空格][空格]等等等
    //提交后显示结果
    <body>
    等等等 等等等
    <br>
    等等等&nbsp;&nbsp;等等等
    <form method="post">
    <input id="aaa" type="text" value="等等等  等等等" name="aaa">
    <input type="submit" value="提交" name="Submit">
    </form>
    </body>继续提交<body>
    等等等&nbsp;&nbsp;等等等
    <br>
    等等等&nbsp;&nbsp;等等等
    <form method="post">
    <input id="aaa" type="text" value="等等等  等等等" name="aaa">
    <!--不要被input的value值忽悠了-->
    <input type="submit" value="提交" name="Submit">
    </form>
    </body>
      

  5.   

    <input id="aaa" type="text" value="等等等  等等等" name="aaa">里面的空格 实际上已经是空格了。value 里面已经有&nbsp;