允许斜线和在preg_match中æ,ø,å

时间:2011-08-18 07:42:15

标签: php preg-match

正如标题所说,我只需要在preg_match中允许正常的斜杠。我认为这是/或某事。但这不起作用。

我还需要允许欧洲字母:æ,ø,å。这是怎么做到的?

有人可以告诉我这个吗? :-)

示例

if(preg_match("/^[a-zA-Z -]+$/", $_POST["last_name"]) == 0)
                {
                    $errMsg = "Dit efternavn må kun indeholde bogstaver, mellemrum og bindestreg.<br>";
                }

然后我正在做一个 if(count($errMsg)==0){ }

提前致谢。

3 个答案:

答案 0 :(得分:2)

这些字符可以正常使用,以便使用斜杠(/)。你需要用反斜杠(\)来逃避它们。像这样:

preg_match("%^[-a-zA-Z æøå\/]+$%");

另请注意,您可以使用任何字符作为分隔符,使用不太可能出现在模式中的字符可能是明智的(在这种情况下,我选择了%)。

答案 1 :(得分:1)

将æøå放入正则表达式以匹配这些字符。要匹配斜杠,只需使用单个反斜杠将其转义即可。

答案 2 :(得分:0)

if(preg_match("/^[a-zA-Z -\/æøå]+$/u", $_POST["last_name"]) == 0)
if(preg_match("~^[a-zA-Z -/æøå]+$~u", $_POST["last_name"]) == 0)

u修饰符适用于UTF-8 Modifiers

您需要将斜杠或更改分隔符转换为其他任何分隔符,例如第二个示例中的~

u modofier很重要

示例:

$str=ord(166);
if(preg_match('~[æ]~',$str)){
    print 'without';
}
if(preg_match('~[æ]~u',$str)){
    print 'with';
}

仅打印without 在第一个示例中,æ被视为两个符号,并且每个符号都匹配