我需要检查一个字符串以确定它是否包含除 之外的任何字符|
,以便分配那些除了|
NULL 值之外什么都没有的变量(理论上可以有任意数量的|
字符,但可能不会超过 5-6 )。像||||
我可以看到循环遍历字符串的每个字符或类似的东西,但我觉得必须有一种更简单的方法。
我需要检查一个字符串以确定它是否包含除 之外的任何字符|
,以便分配那些除了|
NULL 值之外什么都没有的变量(理论上可以有任意数量的|
字符,但可能不会超过 5-6 )。像||||
我可以看到循环遍历字符串的每个字符或类似的东西,但我觉得必须有一种更简单的方法。
if (preg_match('/[^|]/', $string)) {
// string contains characters other than |
}
或者:
if (strlen(str_replace('|', '', $string)) > 0) {
// string contains characters other than |
}
是的,您可以使用正则表达式:
if(! preg_match('/[^\|]/', $string)) {
$string = NULL;
}
我想检查一个字符串是否只包含某些字符。为了防止双重否定(因为我发现它们更难阅读)我决定使用以下正则表达式:
preg_match('/^[|]+$/', $string)
这会从头到尾检查一个字符串是否只包含|
字符(至少一个)。
最快和最简单的方法可能是 stripos 函数。它返回一个字符串在另一个字符串中的位置,如果找不到,则返回 false:
if (false === stripos($string, '|')) {
$string = null;
}
是严格类型比较所false ===
需要的,因为 stripos 可以返回一个零,表明 | 在第一个字符上。
您可以使用更复杂的验证引擎,使阅读更容易。我推荐Respect\Validation。使用示例:
if (v::not(v::contains('|'))->validate($string)) {
$string = null;
}