使用PHP进行复杂名称验证

时间:2016-10-06 06:46:13

标签: php

我正在开发一个项目,其中一部分需要验证名称字段。

这是逻辑:

  

如果任何名称值在'e'之后包含'i'而不是'c'之后,   然后发出错误。

我知道我应该尝试写一些东西然后分享它,但在这种情况下我不知道它是如何完成的。我知道preg_match()可以是一个解决方案,但我再也不知道它是如何完成的。

我知道我会因为没有写任何东西而投票,但希望我能得到答案。

谢谢大家,

2 个答案:

答案 0 :(得分:1)

你应该像你说的那样使用preg_match()。

这是你的模式: [^ c] ei - 对于所有字符串,其中没有 C berfore EI

$badString = 'ceiling';
$goodString = 'vein';
$pattern = '/[^c]ei/';
preg_match($pattern,$badString); // 0
preg_match($pattern,$goodString); //1

如果您想要所有与'cei'匹配的字符串,则不需要正则表达式。 您可以使用stripos

$goodString = 'ceiling';
$badString = 'vein';
stripos($badString, 'cei'); // -1
preg_match($goodString,'cei'); //1

重要!请查看手册以了解两种功能的返回值。

答案 1 :(得分:1)

如果需要区分大小写,您可以使用stripos()(或strpos()。为了证明:

$str1 = "weird";
$str2 = "ceiling";

checkCEI($str1); // Echoes "Error for weird"
checkCEI($str2); // output true, as it passes the test

function checkCEI($str) {
    if (stripos($str, "ei") !== false && stripos($str, "cei") === false) {
     return "Error for ".$str;
    }
    return true;
}