Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá a todos.
Como eu citei acima estou com um problema com strings mas como assim?
Eu preciso pegar uma variável de um form que é um texto que pode conter caracteres espaços, acentos, maiúsculas e minúsculas. Mas esse mesmo texto vai ser usado para criar link ou identificar caminhos de diretórios, então eu criei o seguinte script.
Nome do arquivo: teste.php
CODE
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="[http://www.w3.org/1999/xhtml">](http://www.w3.org/1999/xhtml)
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<?php
setlocale(LC_ALL, 'ptb', 'pt_BR', 'portuguese-brazil', 'bra', 'brazil', 'pt_BR.utf-8', 'pt_BR.iso-8859-1', 'br');
if(isset($_POST['teste'])){
$_txt_test = $_POST['teste'];
$_txt_sem_esp = str_replace(' ', '_', $_txt_test);
$_txt_minusc = strtolower($_txt_sem_esp);
$_dir = 'album/';
$acentos = array ("A" => "/[ÂÀÁÄÃ]/", "a" => "/[âãàáä]/","E" => "/[ÊÈÉË]/", "e" => "/[êèéë]/","I" => "/[ÎÍÌÏ]/", "i" => "/[îíìï]/", "O" => "/[ÔÕÒÓÖ]/", "o" => "/[ôõòóö]/", "U" => "/[ÛÙÚÜ]/", "u" => "/[ûúùü]/", "C" => "/[Ç]/", "c" => "/[ç]/", "N" => "/[Ñ]/", "n" => "/[ñ]/");
$_cam_txt_com = preg_replace(array_values($acentos),array_keys($acentos), $_txt_minusc);
$_cam_txt_com = '../'.$_dir.$_cam_txt_com.'/';
if(!is_dir($_cam_txt_com)){
mkdir($_cam_txt_com);
}
}
?>
<form action="./teste.php" method="post" enctype="multipart/form-data" name="teste">
<input name="teste" type="text" />
<input name="btn_teste" type="submit" value="enviar" />
</form>
</body>
</html>
Bom o que ocorre é que depois que a string passa pelo strtolower() ou passa pelo preg_replace() ela fica destorcida.
String perfeita: Téste Teste
Ex. strtolower() retorna a string em minúsculos mas assim: tã©ste_teste
Ex. preg_replace() retorna a string em minúsculos mas assim: tã©ste_teste
Tanto faz se uso só o strtolower() ou só preg_replace(), isso acontece do mesmo jeito.
Bom Alguém pode me dar uma mão com este problema?
Fico no aguardo. T++
Carregando comentários...