从字符串中删除隐藏字符

Bil*_*l H 7 php utf-8 character-encoding

这应该很简单,但我无法弄清楚.

有问题的网站是UTF-8编码的.

客户在我们的网站上填写表格时遇到了问题.以下是他们输入的示例数据.

SPICER-SMITHS迷失了

它看起来像一个常规字符串,但当你将该字符串复制到像记事本++这样的应用程序时,你会看到一个"?" 出现在单词"SMITHS"("SMITH?S")中.

脚本清理字段并执行删除以下字符的额外步骤: "\r\n", "\n", "\r", "\t", "\0", "\x0B".

虽然它没有抓住这个隐藏的角色.

有谁知道这里发生了什么?

编辑:我正在使用PHP.这是我用来清理字段的函数:

function strip_hidden_chars($str)
{
    $chars = array("\r\n", "\n", "\r", "\t", "\0", "\x0B");

    $str = str_replace($chars," ",$str);

    return preg_replace('/\s+/',' ',$str);
}
Run Code Online (Sandbox Code Playgroud)

编辑2:@thaJeztah引导我回答.我正在测试的字符串是客户从她正在使用的任何应用程序复制并粘贴它后我们的支持票据的输出.实际输入是

SPICER-SMITH'S

tha*_*tah 4

你可以尝试看看这里;删除控制字符?

从 php 字符串中删除控制字符

  • @BillH 你能更新你的问题并添加你为解决问题所做的事情吗?努力保持 StackOverflow 的质量:) (2认同)