嗨,我想检查preg_match_all
一个字符串是否由元音和辅音组成。结构应为consonant|vowel|consonant|vowel
.
例如:
xaxa
xuxu
baba
nunu
嗨,我想检查preg_match_all
一个字符串是否由元音和辅音组成。结构应为consonant|vowel|consonant|vowel
.
例如:
xaxa
xuxu
baba
nunu
这有点棘手,因为虽然我的第一直觉是匹配元音,然后是非元音,但它也匹配其他所有内容。然后在英语中有一些规则,y
有时是元音。
这应该能让你到达那里。
$string = "xaxa xuxu baba nunu nnnn";
$vowels = 'aeiouy';
$consonants = 'bcdfghjklmnpqrstvwxyz';
$pattern = "!([$consonants][$vowels][$consonants][$vowels])!i";
$found = preg_match_all($pattern,$string,$matches);
foreach ($matches[0] as $value){
echo $value."<br />";
}
关于英语的奇怪之处在于这也会匹配yyyy
。如果您不希望将y
其视为元音,则可以将其从组中删除。
$vowels = 'aeiou';
此脚本检查每个单词的交替元音/辅音并返回它们:
$subject = <<<LOD
abacagopa
titot
blux
apocop
pipo
laek
LOD;
$pattern = '~
# definitions
(?(DEFINE)(?<vowel>[aeiou]))
(?(DEFINE)(?<consonant>[bcdfghjklmnpqrstvwyz]))
# pattern
\b\g<vowel>?+(?>\g<consonant>\g<vowel>)*+\g<consonant>?+\b
~ix';
echo preg_replace($pattern, '$0<br/>', $subject);