Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa noite.
Na verdade o título é só um exemplo, ocorre o seguinte:
Os dados que recebo de um input são verificados por uma função simples que deve substituir o caractere se o mesmo for com acento.
Conforme o código abaixo:
$string=str_split($string);
foreach($string as $index => $vector){
if ($vector=='á'){$vector='1';}
if ($vector='é'){$vector='2';}
$vec[] = $vector;
}
$str = implode('',$vec);
return $str;
O problema é que mesmo que eu digite "é" nada acontece. A função é executada antes da inserção no BD e já estou usando UTF8, alguém sabe dizer onde estou errando? A função está funcionando corretamente quando insiro letras sem acentos.
>
Por que não utiliza o str_replace?
Um exemplo:
$string="As letras é ó í ã ú Ú Á";
$modificando = array("a", "e", "i", "o", "u", "A", "E", "I", "O", "U","a");
$acentos = array("á", "é", "í", "ó", "ú", "Á", "É", "Í", "Ó", "Ú","ã");
echo $onlyconsonants = str_replace($acentos,$modificando, $string);
//saída
//As letras e o i a u U A
Obrigado pela resposta, mas não uso str_replace porque ele percorre todo o array procurando cada ocorrência, como a função que preciso não é somente para letras com acento, assim daria um certo "conflito" em algumas ocorrências, precisava de algo com mais controle, comparar cada letra por vez, por isso fiz uso de foreach.
$string=str_split($string);
foreach($string as $index => $vector){
if ($vector=='á'){$vector='1';}
if ($vector='é'){$vector='2';}
$vec[] = $vector;
}
$str = implode('',$vec);
return $str;
if ($vector='é'){$vector='2';}
Você não está verificando, está atribuindo 'é' na variável.
Usou = quando seria == ou ===
Depois que eu vi que você está usando str_split
str_split não funciona com acentos, na verdade, nenhuma função nativa do PHP suporta acento. Use MB_*
Por que não utiliza o str_replace?
Um exemplo:
//saída
//As letras e o i a u U A