11

|NULL以外の値を持たない変数を割り当てるために、文字列をチェックして 以外の文字が含まれているかどうかを判断する必要が|あります (理論的には任意の数の|文字が存在する可能性がありますが、5 ~ 6 文字を超えることはありません)。 )。お気に入り||||

文字列の各文字などをループすることがわかりましたが、もっと簡単な方法が必要だと思います。

4

4 に答える 4

17
if (preg_match('/[^|]/', $string)) {
    // string contains characters other than |
}

また:

if (strlen(str_replace('|', '', $string)) > 0) {
    // string contains characters other than |
}
于 2012-04-20T14:26:05.283 に答える
3

はい、正規表現を使用できます。

if(! preg_match('/[^\|]/', $string)) {
  $string = NULL;
}
于 2012-04-20T14:27:11.823 に答える
2

文字列に特定の文字のみが含まれているかどうかを確認したかったのです。二重否定を防ぐために (読みにくいので)、次の正規表現を使用することにしました。

preg_match('/^[|]+$/', $string)

これは、文字列を最初から最後までチェックして、|文字 (少なくとも 1 つ) のみを含むようにします。

于 2016-08-29T10:02:53.117 に答える
0

最も速くて簡単な方法は、おそらく stripos 関数です。別の文字列内の文字列の位置を返します。見つからない場合は false を返します。

if (false === stripos($string, '|')) {
    $string = null;
}

false ===、stripos が | を示すゼロを返す可能性があるため、厳密な型比較に必要です。最初の文字にあります。

読み取りを容易にする、より高度な検証エンジンを使用できます。Respect\Validationをお勧めします。使用例:

if (v::not(v::contains('|'))->validate($string)) {
    $string = null;
}
于 2012-04-20T14:40:08.973 に答える