我正在开发一个项目,其中一部分需要验证名称字段。
这是逻辑:
如果任何名称值在'e'之后包含'i'而不是'c'之后, 然后发出错误。
我知道我应该尝试写一些东西然后分享它,但在这种情况下我不知道它是如何完成的。我知道preg_match()
可以是一个解决方案,但我再也不知道它是如何完成的。
我知道我会因为没有写任何东西而投票,但希望我能得到答案。
谢谢大家,
答案 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;
}