首页 新闻 会员 周边 捐助

怎么保存且能读出编辑html代码?如php+html

0
悬赏园豆:20 [已解决问题] 解决于 2015-12-30 15:44

如果用输入框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里的双引号全部换了&quot;  那如果html code里有js代码,那js代码就出错不执行了

,

想让大神们跟我说说看像那些cms编辑模版都是怎么保存读取的?

我也没有研究过,刚入门web研究别人的东西好吃力,求大神指点两招

女子100的主页 女子100 | 初学一级 | 园豆:85
提问于:2015-12-29 19:16
< >
分享
最佳答案
0

楼主所举的两个例子,皆因不恰当的代码导致输出了有歧义的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 :&lt;/textarea&gt;'?>

 

说到底这些都属于字符串转义的问题。简而言之,你想在HTML标签内原样显示某个字符串,而这个字符串含有html标签,则应先对该字符串做HTML转义(或者叫HTML编码)。

收获园豆:15
脚本王子 | 小虾三级 |园豆:779 | 2015-12-29 23:06

使用者并不知道哪个字符 会 产生 歧义 ,我想知道技术层要怎么做.

女子100 | 园豆:85 (初学一级) | 2015-12-30 08:55

@女子100: 请楼主先把你自己知道的各种情况及解决方案一一例举出来,然后我看看还有什么遗漏再给你补充,这样你再综合起来就是一个比较完善的处理方法了。

如果我现在直接给你答案,恐怕你会少学很多东西,至少你吃不透转义。

脚本王子 | 园豆:779 (小虾三级) | 2015-12-30 10:04

@脚本王子: 

从帝国cms那里找到个能解决我问题的方法,,

 

PHP htmlspecialchars() 函数

 

定义和用法

htmlspecialchars() 函数把预定义的字符转换为 HTML 实体。

预定义的字符是:

  • & (和号)成为 &
  • " (双引号)成为 "
  • ' (单引号)成为 '
  • < (小于)成为 <
  • > (大于)成为 >

提示:如需把特殊的 HTML 实体转换回字符,请使用 htmlspecialchars_decode() 函数。

 

来源:

http://www.w3school.com.cn/php/func_string_htmlspecialchars.asp

 

 

女子100 | 园豆:85 (初学一级) | 2015-12-30 15:43

这个不能一概而论,什么情况下转义,什么情况下不转义,楼主应该要搞清楚。

脚本王子 | 园豆:779 (小虾三级) | 2015-12-30 15:56

@脚本王子: 谢谢提醒,,先解决问题,后学习,,

大神可以给我解说这样做的反面情况?

女子100 | 园豆:85 (初学一级) | 2015-12-31 09:56

@女子100: 比如用ajax从后台取回一个字符串,让后想把这个字符串原样显示在textarea里面,在用js给textarea的value赋值前,需要先对取回的字符串做html转义吗?

脚本王子 | 园豆:779 (小虾三级) | 2015-12-31 10:42
其他回答(2)
0

对php不了解

但是我想,php应该忽悠html encode/decode相关的功能吧

收获园豆:5
米修君 | 园豆:553 (小虾三级) | 2015-12-30 10:41
0

PHP htmlspecialchars() 函数

 

定义和用法

htmlspecialchars() 函数把预定义的字符转换为 HTML 实体。

预定义的字符是:

  • & (和号)成为 &
  • " (双引号)成为 "
  • ' (单引号)成为 '
  • < (小于)成为 <
  • > (大于)成为 >

提示:如需把特殊的 HTML 实体转换回字符,请使用 htmlspecialchars_decode() 函数。

 

来源:

http://www.w3school.com.cn/php/func_string_htmlspecialchars.asp

女子100 | 园豆:85 (初学一级) | 2015-12-30 15:41
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册