2012-11-03 56 views
0

我目前致力于数据库类型的网站,其中包含的一些文本是明文,如撇号,版权,保留符号等。对mySQL文本进行HTML编码?

数据库由2000个条目组成。我试图想出一个快速,安全的方法,用编码的Ex:©类型字符替换未编码的纯文本符号和字符,以确保文本在网站上正确呈现。

我想的是一样的东西:

while($row = mysql_fetch_array($results)){ 
    if (strstr($row['description'], '©'){ 
     //replace with © 
    } 
    if(strstr($row['description'], '\''){ 
      //replace with ' 
    } 
    ....etc... 
    //once correct string is created, use mySQL to 
    // update $row['description'] for this row... 
} 

我在想,如果这个方法将努力解决我的问题?如果有人可以帮助指导我以安全的方式来完成这一点?

回答

3

htmlentities()方法是实现它的合适方法。

查看PHP手册约htmlentities

+0

感谢您的回复。假设我的字符串是“我的mySQL数据库中的”johnny的玩具很好©“。所以将使用htmlentities()能够将该字符串转换为一种将在HTML中正确呈现?或者我必须首先使用htmlentities将字符串存储在数据库中,然后在使用网站上的文本之前使用html_entity_decode? – AnchovyLegend

+0

如果您在网站上显示它,请勿对其进行解码。浏览器做到了。 当您插入数据库时​​,您可以执行htmlentities(),这将使您每个存储的字符串只执行一次。 你完全可以在读取数据库的字符串后做到这一点,但这意味着每次用户想要看到它时,服务器都会这样做。这是浪费。 – Bgi

2

可以使用htmlentities()但不要忘了用html_entity_decode()而回显文本..

+0

感谢您的回复。假设我的字符串是“我的mySQL数据库中的”johnny的玩具很好©“。所以将使用htmlentities()能够将该字符串转换为一种将在HTML中正确呈现?或者我必须首先使用htmlentities将字符串存储在数据库中,然后在使用网站上的文本之前使用html_entity_decode? – AnchovyLegend

+0

回应该文本直接会显示“约翰尼的玩具是伟大的©”.. –

+0

当它被存储在数据库中它看起来像“约翰尼的玩具是伟大的©”,但当我尝试回显网站上的文字它有一些gibrish字符代替那些特殊字符,而不是渲染,因为它存储在数据库中...... – AnchovyLegend

0

对于那些有类似的问题,我发现这是解决我的问题:

我内容类型设置为UTF-8,而不是下面的一个:

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 

添加上述代码到我的HTML头部标签自动地固定渲染问题。

+0

很好,它显然已经解决了这个问题,但不建议将特殊字符存储到数据库中。 –