PHP用户输入数据进行过滤

1.在表单中,input项,如果用户输入的是英文状态下的双引号或单引号,数据保存后。以后又在后台编辑的时候,<input value=" "这是带引号的值,因为引号导致问题" " ...>因为双引号或单引号的原因,发现数据“丢失”。

2.因此要将输入数据中引号变成html实体。

3.怎么变?答曰:htmlentities或者htmlspecialchars

根据PHP手册来看,htmlentities或者htmlspecialchars几乎一样,而我使用中发现,字符串中有法文等用htmlentities会被转为html实体,用htmlspecialchars不会,而html实体除了<>&' " 没必要转换,所以最好用htmlspecialchars

    //php 5.2.6
    $text = trim($text);//去除数据头尾空格
    //$text = strip_tags($text); //去掉html标签,根据情况决定是否用此
    $text = htmlentities($text,ENT_QUOTES);//单引号,双引号都转化    

4.发现出来的数据是乱码!

5.原来,虽然htmlentities是默认UTF-8,但是还是要加上。

    $text = trim($text);
    //$text = strip_tags($text);
    $text = htmlentities($text,ENT_QUOTES,"UTF-8");

6.嗯,正常了,英文双引号变成了&quot; <变成了&lt;等

7.对用户数据再次编辑的时候,直接从数据库读出来,塞给input的value即可,不需要转码处理之后再塞给input。