用于验证西里尔文的正则表达式

Nic*_*_NY 6 php

我有一个PHP函数来验证"城市":

function validate_city($field) {
    if ($field == "") return "Enter city.<br />";
    else if (preg_match("/[^?-?a-zA-z-]/", $field))
        return "City hame only from letters and -.<br />";
    return "";
}
Run Code Online (Sandbox Code Playgroud)

每次,当我输入一个西里尔城市名称(例如:"Минск")时,它返回:城市hame只来自字母和 - .变量$ _POST ['city']看起来像:Ð Ð¸Ð½Ñ Ðº

在JS这个代码工作正常,我认为有些东西是编码.....

Mar*_*ski 14

您可以使用以下模式验证非拉丁字符:

preg_match ('/^[a-zA-Z\p{Cyrillic}\d\s\-]+$/u', $str);
Run Code Online (Sandbox Code Playgroud)

有关完整说明,请参阅此帖子


x10*_*x10 0

是的,这是一个编码问题。
将其放入您的页面中:

<META http-equiv="Content-Type" content='text/html;charset="UTF-8"'>
Run Code Online (Sandbox Code Playgroud)

或这个:

<META http-equiv="Content-Type" content='text/html;charset="windows-1251"'>
Run Code Online (Sandbox Code Playgroud)