【问题标题】:Escaping a string from database that goes on alt attribute从数据库中转义 alt 属性的字符串
【发布时间】:2011-09-27 23:29:25
【问题描述】:

这应该很容易,但我看不出我在这里缺少什么:

我有我的数据库,我希望从中填充 alt 属性。

我的代码如下:

  <img src="admin/uploads/retouch/'.$list->thumbnail.'" class="thumb-image" alt="'.utf8_encode(addslashes($list->titulo)).'" />

碰巧在这种情况下,我的数据库中的“titulo”里面有“,我在我的代码中得到了这个结果:

  <img ti!\""="" por="" ¡hazlo="" manos.="" en="" estÁ="" prestaciones="" tus="" mejorar="" alt="\" class="thumb-image" src="admin/uploads/retouch/noticia_default.png">

数据库中的句子是:“MEJORAR TUS PRESTACIONES ESTÁ EN TUS MANOS.¡HAZLO POR TI!”

【问题讨论】:

标签: php string escaping


【解决方案1】:

您应该使用 htmlspecialchars 而不是 addslashes,并带有 utf8 选项!

alt="'.htmlspecialchars($list->titulo, ENT_QUOTES, 'UTF-8').'"

【讨论】:

  • 你在页面上设置了utf-8吗? &lt;meta http-equiv="content-type" content="text/html; charset=utf-8" /&gt;
  • 如果编码不正确,也可以尝试在$list-&gt;titulo 周围添加utf8_encode
  • 是的,utf8_encode 做到了,非常感谢,我今天学到了新东西:D
【解决方案2】:

使用 htmlentities 或 htmlspecialchars 来转义标签属性中的字符串。

【讨论】:

    【解决方案3】:

    您需要使用 PHP 函数 htmlspecialchars() 转义此类内容。

    【讨论】:

      【解决方案4】:

      您应该对 htmlentities 进行编码而不是添加斜线:

      alt="'.htmlentities($list->titulo, ENT_QUOTES, 'UTF-8').'"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-20
        • 1970-01-01
        • 2014-10-13
        相关资源
        最近更新 更多