htmlspecialchars() 函数把预定义的字符转换为 HTML 实体。
语法:
htmlspecialchars(string,flags,character-set,double_encode)预定义的字符是:
&(和号)成为 &amp
" (双引号)成为 &quot
' (单引号)成为 '
<(小于)成为 &lt
>(大于)成为 &gt
htmlspecialchars_decode() 函数把一些预定义的 HTML 实体转换为字符。
语法:
htmlspecialchars_decode(string,flags)会被解码的 HTML 实体是:
&amp解码成 &(和号)
&quot解码成 " (双引号)
' 解码成 ' (单引号)
&lt解码成 <(小于)
&gt解码成 >(大于)
经本人测试,据我的理解,问题的原因应该不是脚本的问题,你用firebug进行观察会发现,当你传送post的时候,其中的html文本域内容已经进行了编码,但这个编码会在你脚本运行之前进行还原,所以,不会影响你的正则脚本运算。据我的估计,原因在于:你在输入正则表达式的时候,可能不是太正确。以下是我的测试过程:
运行访问你的脚本,在文本域里将你的脚本源代码粘上,再在正则表达输入框里输入:
%<input
type(.*)/>%si
你查看网页源代码,其输出结果如下:
<pre>Array
(
[0]
=>
Array
(
[0]
=>
<input
type="submit"
name="button"
value="提交"
/>
)
[1]
=>
Array
(
[0]
=>
="submit"
name="button"
value="提交"
)
)
</pre>
说明,还是匹配到了html标签。
而第1个匹配项,在浏览器里会显示为一个html按钮,原因在于这是正规的html语句,所以,浏览器会将这个表现出来。
应该是你的数据在插入到数据库前或者是数据被读出来之后,被函数“htmlspecialchars”把“<>”这两个标记给转换成html代码即“<>”解决办法是,你在网站的程序那修改,就是要先看一下,是在哪个地方把数据转换掉的,那在那里把那个函数去掉就行了,像你这种情况的话应该是在插入数据之前就已经被转换了……先把函数去掉,然后再更新一下数据就行了但是,这样子 *** 作的话会有一个问题,就是如果你的数据里有双引号的话那么你的网页就会出现茬子,所以在读出来的数据那要加上“addSlashes”函数,其作用是在“双引号”或单“引号前”加“\”把那些引号变成转义字符,这样子页面就不会有问题了
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)