2014-09-06 3 views
0

Я пытаюсь найти специальные символы внутри строки. Это гласные с диакритическими акцентами на испанском языке. Предполагается, что программа должна считать гласные в строке с диакритическими акцентами или нет. На испанском языке они являются é, í, ó и ú. Я просто прошу прощения за первые 4. Проблема в том, что мой код не обнаруживает специальных символовПоиск специальных символов php

<?php 
$string='maría'; 

$vocales = preg_match_all('/[aeiouáéíó]/i',$string,$matchesV); 
echo "<br>vocales = $vocales"; 

if ((in_array('á',$matchesV))||(in_array('é',$matchesV)) || (in_array('í',$matchesV)) || (in_array('ó',$matchesV))){ 
    $v = $vocales - 1; 
    echo "<br>v $v"; 
    echo '<br>1'; } 

?> 
+0

вы должны использовать http://php.net/manual/en/book .mbstring.php –

+1

Только совет: вы можете использовать 'in_array' с двумя массивами -' if (in_array (array ('á', 'é', 'í', 'ó'), $ matchesV)) {' –

ответ

0

Почему регулярные выражения? Если я правильно понял вашу проблему, то это делается с небольшим изменением в this function:

<?php 
function substr_count_array($string, $arr) 
{ 
    foreach ($arr as $letter) 
      $count[$letter] += substr_count($string, $letter); 
    return $count; 
} 

$str = 'óóómaóríaéé'; 
print_r(substr_count_array($str, array("á","é","í","ó"))); 

Выход:

Array 
(
    [á] => 0 
    [é] => 2 
    [í] => 1 
    [ó] => 4 
) 
Смежные вопросы