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