【问题标题】:How to remove this character怎么去掉这个字符
【发布时间】:2018-08-04 13:36:08
【问题描述】:

我有一个要从中提取数据的 Excel 文件。部分文本包含如下所示的字符。我已经尝试过 preg_match 和 str_replace 但他们没有抓住它。我假设这是因为我需要该字符的代码,但我在任何地方都找不到。

实际线如下。请注意,缺少的关闭跨度是文件的方式。

    <p><span style="font-size:11px">†Combined weight of 1/2 of total weight</p>

这些是我尝试过的命令。

    $text = preg_replace("†",'',$text);
    $text = str_replace("†",'',$text);

有人能解释一下如何删除那个字符吗?

【问题讨论】:

  • 检查输入和 PHP 文件的编码。
  • php 文件为 UTF-8。我不确定如何检查输入,但我尝试了以下但结果是错误的。 echo mb_detect_encoding($str, 'UTF-8', true) ;
  • UTF-8 有两种可能的保存模式;一个带有 BOM(字节顺序标记)和一个不带。它可以有所作为。 @user3052443
  • 基于一些猜测,我发现字符的HEX code is 2020,恰好是两次空格字符的十六进制代码。我建议将文件读取为 ASCII 编码。如果您在 Notepad++ 中打开文件,您应该能够在“编码”菜单中看到编码。
  • 远射(还将删除其他符号,例如 € ):$cleaned = filter_var($yourString, FILTER_UNSAFE_RAW, FILTER_FLAG_STRIP_HIGH)

标签: php regex


【解决方案1】:

尝试使用内置过滤器的 PHP,例如

$cleaned = filter_var($yourString, FILTER_UNSAFE_RAW, FILTER_FLAG_STRIP_HIGH);

这应该使您能够在不知道其数字代码的情况下删除非 ASCII 字符(简单地说是 Hex 7E 以上的那些),例如匕首符号。然而;它还将删除其他非 ASCII 字符,例如欧元货币符号。如果使用和需要这些,您将不得不找到某种方法来存储并将它们重新应用到您的字符串。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-05
    • 1970-01-01
    • 2021-11-03
    • 2018-09-13
    • 1970-01-01
    相关资源
    最近更新 更多