【发布时间】:2020-07-20 05:34:00
【问题描述】:
我的 PHP 代码从 AJAX 调用接收到 $request。我可以从此参数中提取$name。由于此名称是德语,因此允许的字符还包括 ä、ö 和 ü。
我想通过preg_match 验证$name = "Bär"。我敢肯定,ä 在我的 PHP 代码中以 UTF-8 编码字符串的形式正确到达。但是如果我这样做
preg_match('/^[a-zA-ZäöüÄÖÜ]*$/', $name);
我得到了false,虽然它应该是true。我只会收到true,以防万一
preg_match(utf8_encode('/^[a-zA-ZäöüÄÖÜ]*$/'), $name);
有人可以向我解释一下,以及我如何将 PHP 设置为将每个字符串全局编码为 UTF-8 吗?
【问题讨论】:
-
当你应用一个从头到尾只允许一个单个字符的模式时,你当然会得到错误,值由三个组成> 字符……您在此处的字符类之后错过了一个适当的量词。
-
你说得对,我错过了帖子中的 *,但这不是问题所在。问题是我的 IDE。下面 Joni 的答案是正确的,而且很有帮助。
-
我刚刚更正了我的帖子并将 * 添加到代码中。这是一个复制错误,但不是问题的原因。问题的原因是我的 IDE。请参阅下面 Joni 的答案。