PHP修剪和空间不起作用

Hor*_*rse 12 php encoding space trim

我有一些从csv导入的数据.导入脚本会获取csv中的所有电子邮件地址,并在验证它们之后将其导入数据库.

客户端已提供此csv,并且某些电子邮件似乎在单元格的末尾有一个空格.没问题,修剪那个吸盘......不,不会工作.

这个空间似乎不是一个空间,并没有被删除所以没有通过一堆电子邮件验证.

问题:我能以何种方式实际检测到这个错误字符是什么,以及如何删除它?

不确定它是否有一些时髦的编码,或其他什么东西,但我不想看到它们全部手动删除它们!如果我首先对UTF-8进行编码,则将该字符显示为:

一个

Sve*_*ven 31

如果该"空间"不受影响trim(),则第一步是识别它.

urlencode()在字符串上使用.除了ASCII之外,Urlencode将百分比转义任何不可打印和许多可打印字符,因此您将立即看到违规字符的十六进制代码.根据您发现的内容,您可以采取相应措施或更新您的问题以获得其他帮助.

  • 好吧所以它在urlencode之后以%A0出现,这是一个nbsp,它应该被修剪好吗?但不是:( (3认同)
  • 那应该读作 `urldecode("%A0")`,因为它是相反的。PHP 允许使用转义序列 `\x` 直接将字节添加到字符串中,因此这里的字符串将是 `"\xA0"`:`trim($value, "\xA0")`。还有 `chr()` 函数接受一个整数值,它的作用相同:`trim($value, chr(0xA0)`。`0xA0` 是一个整数的十六进制写入,很像 `160` 是它的十进制写作。请注意,这只是添加了字节,不考虑任何字符集编码。 (2认同)

Tha*_*sis 9

将所有 UTF-8 空格替换为标准空格,然后进行修剪!

$string = preg_replace('/\s/u', ' ', $string);
echo trim($string)
Run Code Online (Sandbox Code Playgroud)

就是这个。