我创建了这个函数,它允许我发送一个字符串作为参数,然后我可以选择id是否想要检查英语,瑞典语或数字。如果它包含除accepted之外的任何内容,函数将返回false,否则返回true。
示例:
$text = 'I like pancakes'; //This should return as true
if(isCharValid($text, 'english')) {
die('returned as true');
}
else {
die('returned as false');
}然而,我在让正则表达式检测到我希望它检测的内容时遇到了问题,你可以在代码的注释中看到我想让它检测的内容。
这是我的函数
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;
}
}发布于 2016-10-13 20:09:08
您可以要求整个字符串由这些字符组成,方法是使用^ / $将模式括起来,并将+量词添加到正字符类中
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修饰符添加到最后一个数字正则表达式中是一个好主意,以确保带有数字和末尾换行符的字符串不能匹配。
发布于 2016-10-13 20:09:54
联系方式:isCharValid($text,$type)
代替isCharValid($text)
https://stackoverflow.com/questions/40020529
复制相似问题