【发布时间】:2025-12-10 19:05:01
【问题描述】:
我正在使用以下函数从字符串中删除空格:
$str = preg_replace('/\s+/', '', $str);
我正在输入这串法语字符:ù û ü ÿ à â æ ç é è ê ë ï î ô 注意每个字符之间都有一个空格。
à 字符无法识别;这是输出的样子:ùûüÿ�âæçéèêëïîô
知道为什么吗?我也尝试过将 str 转换为 UTF-8 也无济于事。
更新:我发现以下帖子 (Weird problem with preg_replace and chinese character) 在正则表达式末尾添加 u 可以解决问题,如下所示:
$str = preg_replace('/\s+/u', '', $str);
这似乎解决了这个问题,但有人可以解释为什么会发生这种情况以及官方解决方案解释 u 在这个正则表达式中的作用吗?
【问题讨论】:
-
你的页面是 UTF8 的吗?在这里工作,eval.in/447334 ...示例字符串是您的确切字符串吗?
-
u是一个 unicode 修饰符,php.net/manual/en/reference.pcre.pattern.modifiers.php。没有它它也可以工作......或者至少在这里和eval.. -
是的,它是确切的字符串。通过电子邮件发送的字符也很混乱。
标签: php regex character-encoding preg-replace special-characters