Php preg_match_all检查特殊结构

Php preg_match_all检查特殊结构,php,preg-match,Php,Preg Match,嗨,我想用preg\u match\u all检查字符串是否由元音和辅音组成。 结构应为辅音|元音|辅音|元音 例如: xaxa xuxu baba nunu 这有点棘手,因为虽然我的第一反应是匹配元音,然后不匹配元音,但它也匹配其他所有内容。英语中有规则,y有时是元音 这应该能让你达到目的 $string = "xaxa xuxu baba nunu nnnn"; $vowels = 'aeiouy'; $consonants = 'bcdfghjklmnpqrstvwxyz'; $patt

嗨,我想用
preg\u match\u all
检查字符串是否由元音和辅音组成。 结构应为
辅音|元音|辅音|元音

例如:

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 />";
}

该脚本检查每个单词的交替元音/辅音,并返回它们:

$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);

$subject=Hi感谢您的帮助。我不必设置辅音?我试过了,但什么也没找到。但我能看到。或者我如何只显示匹配的条目?我的第一个答案也匹配了非字母的内容。啊,好吧,现在我得到了如下答案:数组([0]=>xaxa[1]=>xuxu[2]=>baba[3]=>nununu)[1]=>Array([0]=>xaxa[1]=>xuxu[2]=>baba[3]=>nunununuu]),但我想让xaxaxa,xuxu每一行都有一行。。。。还有我不想看的底片,你在挣扎什么?你读过正则表达式手册了吗?
$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);