【问题标题】:PHP How to Remove/Replace Unknown question mark diamond charactersPHP如何删除/替换未知的问号菱形字符
【发布时间】:2018-03-14 11:21:42
【问题描述】:

我正在使用 PHP 访问旧机器上的数据并输出它们。

腻子展示:

▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒NONE.
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒

这是一种奇怪的格式,试图以更干净的方式显示数据

PHP echo-ed chrome 显示:

������
�NONE. �
������

我试过了:

$Str1 = str_replace("▒","",$Str1);

但它不会过滤掉它们。 输出已经是 utf 8。

有谁知道如何过滤掉这些东西?也许确定什么是 php?

【问题讨论】:

标签: php


【解决方案1】:

试试这个:

$Str1 = preg_replace('/[\x00-\x1F\x7F-\xFF]/', '', $Str1);

【讨论】:

  • 完美运行。但是为什么是\x00-\x1F\x7F-\xFF?
  • 它从字符串中删除不需要的字符
  • 谢谢。像魅力一样工作。
  • 它还会删除其他字母,如ç、ğ
  • @temirbek 完全正确,因此,这不是一个有效的解决方案
【解决方案2】:

'/[\x00-\x1F\x7F-\xFF]/' 这样的正则表达式的问题在于它简单地破坏了所有 UTF-8。因此,所有可能的字符中只有大约 1% 或更少的字符可以使用它。 Full Working Demo

为什么不阻止造成这种情况的原因?

使用完全 utf-8 配置的数据库和正确的标头,如果您使用以下内容可能会发生此问题:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-22
    • 1970-01-01
    • 2013-04-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多