【发布时间】:2020-10-09 09:01:29
【问题描述】:
我有一个字符串,即根据 mb_detect_encoding() 的 UTF-8 编码。我想这样修剪:
$string = trim($string);
但是没有效果。
当我用 urlencode($string) 查看字符串时,它会显示:
“++++++++++++++++++字符串+更多+文本++++++++++++”
根据:https://markushedlund.com/dev/trim-unicodeutf-8-whitespace-in-php/这段代码我试过了,但是没有效果:
preg_replace('/^[\pZ\pC]+|[\pZ\pC]+$/u', '', $string);
我该如何修剪? 我怎样才能找到空格字符代表什么,然后替换它。我只知道 urlencode,但这只是通过显示 +++ 告诉我这是一个空格。
更新: 感谢下面 cmets 中的@Stefanov.sm,我了解到您可以使用以下命令将字符串输出为十六进制:bin2hex($string);然后我看到一大堆 20202020,我看到 20 代表 UTF-8 编码中的空间。 奇怪的是,虽然修剪不起作用,但起作用的是:
$string = str_replace("\x20","",$string);
也许我能找出原因。但至少完成了摆脱它们的目标。
【问题讨论】:
-
阅读the manual
+应该是空格。 -
对不起,更新了问题,我知道 + 代表空格,但是我该如何修剪呢?我无法摆脱这些空间。
-
如果没有可重现的例子,这很难说。
-
初始字符串中可能包含不可打印的 Unicode 字符。你能先用bin2hex 十六进制转储它然后看看吗?或者将
mb_convert_encoding应用到您的相关代码页中,然后应用trim? -
嗨@Stefanov.sm 谢谢,没想到。好的,当放入 bin2hex 时,我得到很多:“2020202020202020”这似乎代表一个空格符号:fileformat.info/info/unicode/char/20/index.htm。现在如何摆脱它们。我试过 str_replace("\0x20","",$string);但这行不通。