【问题标题】:weird characters such as ‪ ‬ ‏奇怪的字符,例如‏
【发布时间】:2011-05-20 05:27:19
【问题描述】:

我的朋友一直在我们的网站上玩一些语言的东西,我们的文件名现在正在使用这些字符。通常我会等他醒来,但这是一个相当大的问题,因为我们收到了关于文件名中奇怪字符的电子邮件。

在 HTML 中回显时看不到字符,但我们将名称输出到标题,它确实显示了字符,如下所示:

header('Content-Disposition: attachment; filename="'.$title.'.'.strtolower($type).'";');

我们怎样才能避免显示这些字符?它们也被输入到我们的数据库中,文件名如‪asdfmovie‬‏ - 我已经用谷歌搜索了这些代码,但找不到任何结果。

有人知道它们是什么吗?以及如何避免它们?

谢谢

【问题讨论】:

  • x202a 和 x202c 分别是从左到右嵌入和 POP 方向格式。
  • 好的,我将如何从标题中删除它们?有功能吗?还是我必须 str/preg 替换?

标签: php mysql


【解决方案1】:

这些是HTML entities,可以使用html_entity_decode 解码,例如echo html_entity_decode($str, ENT_COMPAT, 'UTF-8')

如您所见,将这些值存储在数据库中是错误的。这些值应该以其原始形式存储,并且只有在需要输出到 HTML 时才编码 HTML 实体。找出它们在哪里被 HTML 编码并修复它。如果您已经拥有一个充满这种废话的数据库……嗯,倒过来玩得开心。 :o)

【讨论】:

  • 4 分钟后的相同答案被选为最佳答案。好的。
【解决方案2】:

html_entity_decode()

http://php.net/manual/en/function.html-entity-decode.php

这些是在 HTML 中有效的 html 实体。您的电子邮件客户端实际上将它们编码为 HTML 实体(双重效果),这意味着实际实体就是您所看到的。只需确保传入电子邮件的任何内容都通过 html_entity_decode() 函数运行。

【讨论】:

    猜你喜欢
    • 2011-03-27
    • 2020-05-12
    • 2014-04-09
    • 1970-01-01
    • 1970-01-01
    • 2015-07-13
    • 2014-10-03
    • 2010-09-05
    • 2020-12-29
    相关资源
    最近更新 更多