preg_match 在使用 UTF-8 编码的 .php 文件中不起作用

preg_match doesn't work in .php file with UTF-8 encoding

有人可以向我解释它是如何工作的吗?经过半小时的思考可能导致 PHP 函数出现问题的原因 preg_match 我发现文件编码是我 worries.Giving 你的例子的来源来自网站:

function  checkEmail($email) {
if (!preg_match("/^( [a-zA-Z0-9] )+( [a-zA-Z0-9\._-] )*@( [a-zA-Z0-9_-] )+( [a-zA-Z0-9\._-] +)+$/" , $email)) {
return false;
}
return true;
};

上面显示的函数 100% 正确。我将它粘贴到我的文件中只是为了检查我的函数是否有误,但是我的函数和上面的函数在启用 UTF-8 时都不起作用,而在 ANSI 时正常工作enabled.Can你准确的解释了问题出在哪里或者我是什么错误doing.Thank你

你需要告诉它搜索主题是UTF8。

function  checkEmail($email) {
    if (!preg_match("/^( [a-zA-Z0-9] )+( [a-zA-Z0-9\._-] )*@( [a-zA-Z0-9_-] )+( [a-zA-Z0-9\._-] +)+$/u" , $email)) {
          return false;
    }
          return true;
}

在那个正则表达式中,我在末尾添加了 u,这使得模式和字符串成为 utf8。

Pattern and subject strings are treated as UTF-8.

-Full documentation(和其他修饰符)