我创建了这个函数,允许我发送一个字符串作为参数,然后我可以选择更好的id来检查英语,瑞典语或数字。如果它包含任何内容,但接受的字符函数将返回false,否则返回true。
示例:
$text = 'I like pancakes'; //This should return as true
if(isCharValid($text, 'english')) {
die('returned as true');
}
else {
die('returned as false');
}
但是,我在使正则表达式检测到Id喜欢检测的内容时遇到问题,您可以在代码中的注释中看到我想要检测到的内容。
这是我的功能
function isCharValid($string, $type){
if($type == 'english') { //String may contain A-Z, a-z, 0-9 and whitespace
return !preg_match('/[^A-Za-z0-9\s]/', $string);
}
else if($type == 'swedish'){ //String may contain A-Ö,a-ö,0-9 and whitespace
return !preg_match('/[^A-Za-z0-9åäöÅÄÖ\s]/', $string);
}
else if($type == 'number'){ //String may contain numbers 0-9, no WHITESPACES
return !preg_match('/[^0-9]*$/', $string);
}
else {
return false;
}
}
答案 0 :(得分:0)
您可能要求整个字符串应包含这些字符,方法是将模式用^
/ $
括起来,并将+
量词添加到正字符类:
function isCharValid($string, $type){
if($type == 'english') { //String may contain A-Z, a-z, 0-9 and whitespace
return preg_match('/^[A-Za-z0-9\s]+$/u', $string);
}
else if($type == 'swedish'){ //String may contain A-Ö,a-ö,0-9 and whitespace
return preg_match('/^[A-Za-z0-9åäöÅÄÖ\s]+$/u', $string);
}
else if($type == 'number'){ //String may contain numbers 0-9, no WHITESPACES
return preg_match('/^[0-9]+$/Du', $string);
}
else {
return false;
}
}
然后,使用
$text = 'I like pancakes'; //This should return as true
$type = "english";
if(isCharValid($text, $type)) {
die(returned as true);
}
else {
die(returned as false);
}
请注意,最好将/D
修饰符添加到最后一个数字正则表达式,以确保包含数字的字符串和末尾的换行符LF符号不匹配。
答案 1 :(得分:0)
致电:isCharValid($text,$type)
而不是isCharValid($text)