2013-06-10 2 views
0

안녕하세요. preg_match_all으로 확인하고 싶습니다. 모음이 모음과 자음으로 구성되어 있으면 확인하고 싶습니다. 구조는 consonant|vowel|consonant|vowel이어야합니다. 예를 들어preg_match_all 특수 구조 확인

:

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'; 
+0

안녕하세요. 도움을 주셔서 감사합니다. 자음을 설정하지 않아도됩니까? 나는 그것을 시도했지만 아무것도 찾지 못했다. 그러나 나는 그것을 볼 수있다. 아니면 일치하는 항목 만 표시 할 수 있습니까? – TrivoXx

+0

첫 번째 답변은 글자가 아닌 내용과 일치했습니다. –

+0

아, 이제 다음과 같은 대답을 얻을 수 있습니다 : 배열 ([0] => 배열 ([0] => xaxa [1] => xuxu [2] => baba [3] => nunu) [1] = > Array ([0] => xaxa [1] => xuxu [2] => baba [3] => nunu)) 그러나 새로운 줄마다 xaxa, xuxu를 갖고 싶습니다. negativ 일치 나는보고 싶지 않아요. – TrivoXx

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