我有允许的字母列表
$allowedLetters = array('B','C','D','F','G','H','J','K','L','M','N','P','R','S','T','V','W','X','Y','Z');
并且从该数组中我想进行字符串递增以获取以下模式:
BBB, BBC, BBD ... until ZZZ
我知道我可以像这样简单地增加字符串:
$letters = array();
$letter = 'BBB';
while ($letter !== 'ZZZ') {
$letters[] = $letter++;
}
print_r($letters);
但是它与我的允许的字母列表不匹配,我只是找不到一种方法来使用允许的列表进行增量运算,或者只是排除不想要的字母,例如:
A,E,I,O,Q,U
还有什么更简单?如果有人可以提供帮助,我将不胜感激。
我提出了涉及strcspn()
功能的解决方案:
strcspn()
提到的函数返回$letters = array();
$letter = 'BBB';
while ($letter !== 'ZZZ') {
$letter++;
if(strcspn($letter, "AEIOU") == 3 )
$letters[] = $letter;
}
print_r($letters);
参数中列出的字符的首次出现的索引。因此,在我们的情况下,如果存在任何字符,它将返回[0-2]范围内的值。
这意味着确保它返回3,我们只接受不包含禁止字符“ AEIOU”的字符串。