如果用输入框input来做,html代码中有双引号或者单引号可能会出错
1 <input name="html_code" value="<?php echo'this value:"value"' ?>"> 2 3 像这种情况,录入的时候,能成功保存 this value:"value" 值到数据库中 4 5 但是输出 用于修改内容 的时候就出错了 6 7 输出会是这样的,,,到双引号那里就截止了 8 9 <input name="html_code" value="this value:" value""> 10 11 实际上我们只看到输入框里的值是 this value:
如果我们用的是textarea做内容编辑器,也会出现这种情况
1 <textarea name="html_code"> 2 <?php echo 'the textarea end :</textarea>'?> 3 </textarea> 4 5 如果html代码是那个,,也会保存成功, 但读出编辑会失败 6 7 <textarea name="html_code"> 8 the textarea end :</textarea> 9 </textarea>
很多cms都能把html代码保存到数据库中,又正常读出做修改,,他们一般是用的什么方法?
我考虑到用替换,如果全部替换,感觉不太好,,
就像,html里的双引号全部换了" 那如果html code里有js代码,那js代码就出错不执行了
,
想让大神们跟我说说看像那些cms编辑模版都是怎么保存读取的?
我也没有研究过,刚入门web研究别人的东西好吃力,求大神指点两招
楼主所举的两个例子,皆因不恰当的代码导致输出了有歧义的HTML,浏览器无法正确解析。
第一个例子
<input name="html_code" value="<?php echo'this value:"value"' ?>">
改为
<input name="html_code" value='<?php echo'this value:"value"' ?>'>
第二个例子
<?php echo 'the textarea end :</textarea>'?>
改为
<?php echo 'the textarea end :</textarea>'?>
说到底这些都属于字符串转义的问题。简而言之,你想在HTML标签内原样显示某个字符串,而这个字符串含有html标签,则应先对该字符串做HTML转义(或者叫HTML编码)。
使用者并不知道哪个字符 会 产生 歧义 ,我想知道技术层要怎么做.
@女子100: 请楼主先把你自己知道的各种情况及解决方案一一例举出来,然后我看看还有什么遗漏再给你补充,这样你再综合起来就是一个比较完善的处理方法了。
如果我现在直接给你答案,恐怕你会少学很多东西,至少你吃不透转义。
@脚本王子:
从帝国cms那里找到个能解决我问题的方法,,
PHP htmlspecialchars() 函数
定义和用法
htmlspecialchars() 函数把预定义的字符转换为 HTML 实体。
预定义的字符是:
提示:如需把特殊的 HTML 实体转换回字符,请使用 htmlspecialchars_decode() 函数。
来源:
http://www.w3school.com.cn/php/func_string_htmlspecialchars.asp
这个不能一概而论,什么情况下转义,什么情况下不转义,楼主应该要搞清楚。
@脚本王子: 谢谢提醒,,先解决问题,后学习,,
大神可以给我解说这样做的反面情况?
@女子100: 比如用ajax从后台取回一个字符串,让后想把这个字符串原样显示在textarea里面,在用js给textarea的value赋值前,需要先对取回的字符串做html转义吗?
对php不了解
但是我想,php应该忽悠html encode/decode相关的功能吧
PHP htmlspecialchars() 函数
定义和用法
htmlspecialchars() 函数把预定义的字符转换为 HTML 实体。
预定义的字符是:
提示:如需把特殊的 HTML 实体转换回字符,请使用 htmlspecialchars_decode() 函数。
来源:
http://www.w3school.com.cn/php/func_string_htmlspecialchars.asp