如何检查字符串是否只包含特定字符

时间:2012-04-20 14:23:12

标签: php preg-match

我需要检查字符串以确定它是否包含除|以外的任何字符,以便为那些除|之外没有任何内容的变量赋值为NULL(理论上可能有任何数字|个字符,但可能不会超过5-6个字符。与||||

一样

我可以看到循环遍历字符串的每个字符或者某些东西,但我觉得必须有一种更简单的方法。

4 个答案:

答案 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;
}