Hola!
Dado un texto de entrada, debo convertirlo en formato url.  Por lo tanto, en caso de tener caracteres especiales lo debo transformar a % seguido del código ascii en notacion hexadecimal (esto segun:  http://es.kioskea.net/internet/url.php3).
Para esto me hice la siguiente funcion:
 
function translate2url_cod($text){
$output = '';
$tab_text = str_split($text);
foreach ($tab_text as $id=>$char){
	$ascci_cod = ord($char);
	if(($ascci_cod>122)
	||(($ascci_cod >= 0)&&($ascci_cod <= 47)) 
	||(($ascci_cod >= 58)&&($ascci_cod <= 64))
	||(($ascci_cod >= 91)&&($ascci_cod <= 96))
		){
		$hex = dechex(ord($char));
		$output .= '%' . $hex;
	}else{
		$output .= $char;
	}
}
return $output;
}
 
El tema pasa porque por ej, si tengo una frase del estilo a:  
á, é, í, ó y ú
la sentencia $tab_text = str_split($text) en lugar de ubicar cada caracter en una posicion del arreglo, cada vocal acentuada me la traduce en dos códigos.  Por ej, la á:
char: � - ascci_cod: 195 - hex: c3
char: � - ascci_cod: 161 - hex: a1
Cuando en realidad seria en ascii el valor 160, que al traducirse segun url %A0.
Me podrian ayudar para ver como obtener caracter a caracter en lugar de la funcion str_split?
 
Muchas gracias!
Edith 
   
 


