用PHP进行复杂名称验证

用PHP进行复杂名称验证,php,Php,我正在处理一个项目,其中一部分需要验证名称字段 逻辑如下: 如果任何名称值在“e”之后包含一个不在“c”之后的“i”, 然后发出一个错误 我知道我应该试着写一些东西,然后分享,但在这种情况下,我不知道它是如何做到的。我知道preg_match()可以是一个解决方案,但我也不知道它是如何实现的 我知道我会因为不写任何东西而被否决,但希望我能得到答案 谢谢各位,你们应该像你们说的那样使用preg\u match() 这是您的模式: [^c]ei-对于所有字符串,在ei之前没有cBER $badStr

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

逻辑如下:

如果任何名称值在“e”之后包含一个不在“c”之后的“i”, 然后发出一个错误

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

我知道我会因为不写任何东西而被否决,但希望我能得到答案

谢谢各位,

你们应该像你们说的那样使用preg\u match()

这是您的模式: [^c]ei-对于所有字符串,在ei之前没有cBER

$badString = 'ceiling';
$goodString = 'vein';
$pattern = '/[^c]ei/';
preg_match($pattern,$badString); // 0
preg_match($pattern,$goodString); //1
如果希望所有字符串都与“cei”匹配,则不需要正则表达式。 你可以用

重要请查看手册以了解这两个函数的返回值。

您可以使用(如果需要区分大小写,也可以使用
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;
}

我只是检查一下。它提供了我编写的输出。你能展示一下你是怎么做到的吗?根据你的回答,“Vene”是坏字符串,但“天花板”是好字符串,因为“c”应该在“ei”之后才能验证。顺便说一句,它帮了我的忙,谢谢你把它修好了。我忘了slashes@ShahGhafoori你能提供好字符串和坏字符串的示例以供clearify使用吗?@Dmytrechko很抱歉,我的第一个评论是错误的,我的意思是c应该在“ei”之前。“Ceilena”是一个好字符串,因为它有“EI”,在“EI”之前有一个“C”,但“Vene”是个坏字符串,因为它有EI,但在这之前没有C。你要找的是正则表达式。尝试一下,如果无法找到解决方案,请在此处发布您尝试过的任何内容。英语包含此“规则”(与此语言中的任何“规则”一样)。请将最有帮助/您喜欢的答案打绿色勾,认为您的问题已解决。
$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;
}