Dany X 0 Denunciar post Postado Março 11, 2009 Porque o seguinte código destrói os acentos? <?PHP if ($_POST['phrase']!=''){ $str = str_replace(" ", "", $_POST['phrase']); $str_l = strlen($str); $side = sqrt($str_l); $side = ceil($side); echo $str."<br />"; for ($i=1; $i<=$side; $i++){ $linhas[$i] = substr($str,($i-1)*$side,$side); echo "LINHA $i ->".(($i-1)*$side)." = ".$linhas[$i]."<br />"; } for ($i=1; $i<=$side; $i++){ for ($j=1; $j<=$side; $j++){ $enc .= substr($linhas[$j],($i-1),1); //echo "ADD char ".substr($linhas[$j],($i-1),1)."<br />"; } } $enc = $enc; echo 'A frase <b>'.$_POST['phrase'].'</b> encriptada com a caixa de César dá:<br />'.$enc; } ?> Veja em ação aqui: http://opencloud.comze.com/sandbox/caesar/index.php Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Março 11, 2009 a função substr não é "multi-byte safe" utilize mb_substr nesses trechos $linhas[$i] = substr($str,($i-1)*$side,$side); $enc .= substr($linhas[$j],($i-1),1); troque por $linhas[$i] = mb_substr($str,($i-1)*$side,$side); $enc .= mb_substr($linhas[$j],($i-1),1); Compartilhar este post Link para o post Compartilhar em outros sites
Dany X 0 Denunciar post Postado Março 11, 2009 ... for ($i=1; $i<=$side; $i++){ $linhas[$i] = mb_substr($str,($i-1)*$side,$side); echo "LINHA $i ->".(($i-1)*$side)." = ".$linhas[$i]."<br />"; } for ($i=1; $i<=$side; $i++){ for ($j=1; $j<=$side; $j++){ $enc .= mb_substr($linhas[$j],($i-1),1); //echo "ADD char ".substr($linhas[$j],($i-1),1)."<br />"; } } ... Ainda não funciona (já está online a nova versão). Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Março 12, 2009 retorna algum erro ? ou está retornando o mesmo resultado anterior? fiz um teste usando áéí e outro teste usando a palavra ação ambos foram bem-sucedidos no script, há também outra função que também pode comprometer a identificação dos caracteres a função strlen também não é "multi-byte safe" tente trocar strlen pela função equivalente da lista de funções mbstring mb_strlen http://www.php.net/manual/pt_BR/function.mb-strlen.php Compartilhar este post Link para o post Compartilhar em outros sites
Dany X 0 Denunciar post Postado Março 13, 2009 Vlw. Acho que é alguma coisa do Chrome então. Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Março 13, 2009 outros browsers funcionam como esperado ? Compartilhar este post Link para o post Compartilhar em outros sites
Dany X 0 Denunciar post Postado Março 13, 2009 Não testei, você disse que a palavra ação funciona no FF, no chrome aparece isso: a�ã�o Quando deveria aparecer: aãço Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Março 13, 2009 Desconfio que o problema no seu caso deve ser ausência ou erro no charset da metatag HTML. Compartilhar este post Link para o post Compartilhar em outros sites