簡體   English   中英

如何檢查字符串是否包含php中所有必需的字符

[英]How to check if a string contains ALL of required characters in php

我正在嘗試檢查字符串是否包含字母A,B和C,並且沒有其他內容。 有沒有使用preg_match做到這一點的preg_match

舉一個我想要的例子,支票應該返回

ABC //TRUE
AABC //TRUE
ABBCC //TRUE
ABCD //FALSE

因此,字符串必須至少包含ABC一次,並且不得包含其他字符。

要以任意順序至少一次匹配A,B和C,可以使用以下正則表達式:

/^(?=.*a)(?=.*b)(?=.*c)([a-c])+$/i

演示

但是,我認為無需正則表達式就可以實現這一目標。 制作一個函數,該函數將要檢查的字符列表和一個字符串作為參數。 對於每個字符,首先檢查它是否包含在字符串中。 如果不是,則返回false 如果它們都在那里,請從字符串中刪除它們。 現在,如果字符串為空,則沒有其他字符,因此可以返回true ,否則返回false

<?php
function checkCharacters($list, $string) {
    foreach ($list as $letter) {
        if (stripos($string, $letter) === false) {
            return false;
        }
        $string = str_ireplace($letter, "", $string);
    }
    return empty($string);
}
$list = ["A", "B", "C"];
var_dump(checkCharacters($list, "ABC")).PHP_EOL; // true
var_dump(checkCharacters($list, "AABC")).PHP_EOL; // true
var_dump(checkCharacters($list, "ABBCC")).PHP_EOL; // true
var_dump(checkCharacters($list, "ABCD")).PHP_EOL; // false
var_dump(checkCharacters($list, "BAC")).PHP_EOL; // true
var_dump(checkCharacters($list, "ABACBCBACB")).PHP_EOL; // true
var_dump(checkCharacters($list, "AB")).PHP_EOL; // false
var_dump(checkCharacters($list, "AC")).PHP_EOL; // false
var_dump(checkCharacters($list, "A")).PHP_EOL; // false
var_dump(checkCharacters($list, "abc")).PHP_EOL; // true

以防萬一,這是不區分大小寫的,因此它也將接受abc

演示

如您所述,您可以使用preg_match ...

if (!preg_match("/^[ABC]+$/",$yourtext)) {
   echo 'This string has other characters.';   
} else {
   echo 'This string only has A,B and C.';
}

希望對您有所幫助

<?php
function str_alphabet($string, array $alphabet) {
    $counts = array_count_values(str_split($string));

    sort($alphabet);
    ksort($counts);

    return array_keys($counts) === $alphabet;
}

如果$string至少包含一次提供的$alphabet數組的每個字母,並且不包含其他字符,則返回true。

用法示例:

str_alphabet('ABACBABCABCABCA', ['A', 'B', 'C']); // true
str_alphabet('ABCD', ['A', 'B', 'C']); // false

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM