您好我想与preg_match_all
核对一个字符串是否包含元音和辅音。
结构应为consonant|vowel|consonant|vowel
。
例如:
xaxa
xuxu
baba
nunu
答案 0 :(得分:1)
这有点棘手,因为虽然我的第一直觉是匹配元音而不是元音,但它也匹配其他所有东西。然后是英语规则,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';
答案 1 :(得分:0)
此脚本检查每个单词的交替元音/辅音并返回它们:
$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);