Título: Cadena de texto a url string
Publicado por: [u]nsigned en 29 Julio 2011, 17:16 pm
Hola, queria saber si existe una funcion que me convierta una cadena de texto cualqueira a una cadena apta para usar como parte de una url, por ejemplo a partir de la cadena: Guía de información útil para pingüinos Al pasarla por dicha funcion me devuelva: guia_de_infomracion_util_para_pinguinos Algo similar a la funcion underscore() de CodeIgniter. El problema con esta funcion es que no convierte caracteres con acentos u otros caracteres que no sean letras o numeros... El tema es que en mi web el usuario ingresara una caden de texto que sera usada como url http://www.miwebbsite.net/urlSaludos
Título: Re: Cadena de texto a url string
Publicado por: madpitbull_99 en 29 Julio 2011, 17:26 pm
Sí, la función de abajo la utilizo en CodeIgniter: public function downloadName($name) { }
Desconocía la función underscore() de CodeIgniter.
Título: Re: Cadena de texto a url string
Publicado por: [u]nsigned en 29 Julio 2011, 17:46 pm
Gracias por responder. Lo que yo quiero es quitar acentos y esas cosas..el problema de underscore() es que no los convierte, solo los elimina, de momento se me ocurrio implementarlo asi: function PoC($cadena) { return $cadena }
Y ahi si ya puedo pasarla por underscore(). De momento es para lo unico que uso esta funcion, posiblemente edite la libreria (helper) inflector (http://codeigniter.com/user_guide/helpers/inflector_helper.html) para agregarle esta funcionalidad. Saludos y nuevamente gracias.
Título: Re: Cadena de texto a url string
Publicado por: madpitbull_99 en 29 Julio 2011, 19:01 pm
Para reemplazar los acentos se puede hacer así: /** * Devuelve la cadena introducida en codigo * HTML correspondiete. * Usada para filtrar tildes y otros caracteres. * * @return string * @author MadPitbull */ public function replaceTildes ($cadena){ $cadena = htmlentities($cadena, ENT_QUOTES | ENT_IGNORE , "UTF-8"); return $cadena; }
Aunque supongo que tu método también funciona. La versión "más chapucera" sería de ésta forma: /** * Devuelve la cadena introducida en codigoH TML correspondiente - version antigua -. * * @return string * @author MadPitbull */ function replaceTildesOld($cadena){ return $cadena; }
Título: Re: Cadena de texto a url string
Publicado por: Shell Root en 29 Julio 2011, 20:28 pm
Se pueden usar vectores para los patrones y los reemplazos, y se debe de usar preg_replace porque ereg_replace esta obsoleto. /** * * **/ function replaceTildes( $pString ){ $_characters = array( '/á/','/é/','/í/','/ó/','/ú/' ); $_replacement = array( 'á','é','í','ó','ú' ); }
Título: Re: Cadena de texto a url string
Publicado por: WHK en 30 Julio 2011, 06:53 am
Y donde dejan los carácteres unicodes? Esto uso yo en mi sistema web: function toFriendlyUrl($buff = false){ if(!$buff) $buff = $this->data; /* Nulls */ for($c = 0; $c <= 255; $c++){ $replaces[$c] = ''; } /* Numerics */ for($c = 48; $c <= 57; $c++){ } /* Upper chars */ for($c = 65; $c <= 90; $c++){ } /* Lower chars */ for($c = 97; $c <= 122; $c++){ } /* '"`´ */ $replaces[34] = '.'; $replaces[39] = '.'; $replaces[44] = '.'; $replaces[96] = '.'; /* Simbols */ $replaces[32] = '_'; /* Blank space */ $replaces[40] = '_'; $replaces[41] = '_'; $replaces[43] = '_'; $replaces[45] = '-'; $replaces[46] = '.'; $replaces[47] = '_'; $replaces[58] = '_'; $replaces[59] = '_'; $replaces[61] = '-'; $replaces[91] = '-'; $replaces[92] = '_'; $replaces[93] = '-'; $replaces[95] = '_'; $replaces[123] = '-'; $replaces[124] = '-'; $replaces[125] = '-'; $replaces[126] = '-'; $replaces[128] = 'e'; $replaces[130] = '_'; $replaces[131] = 'f'; $replaces[132] = '_'; $replaces[133] = '_'; $replaces[138] = 's'; $replaces[139] = '-'; $replaces[140] = 'ce'; $replaces[142] = 'z'; $replaces[149] = '.'; $replaces[150] = '-'; $replaces[151] = '-'; $replaces[152] = '-'; $replaces[153] = 'tm'; $replaces[154] = 's'; $replaces[155] = '-'; $replaces[152] = 'oe'; $replaces[158] = 'z'; $replaces[159] = 'y'; $replaces[160] = '_'; $replaces[162] = 'c'; $replaces[163] = 'f'; $replaces[164] = '.'; $replaces[165] = 'y'; $replaces[166] = '-'; $replaces[167] = 's'; $replaces[169] = 'c'; $replaces[170] = 'a'; $replaces[174] = 'r'; $replaces[175] = '-'; $replaces[176] = '.'; $replaces[178] = '2'; $replaces[179] = '3'; $replaces[181] = 'u'; $replaces[182] = 'p'; $replaces[183] = '.'; $replaces[184] = '_'; $replaces[185] = 'i'; $replaces[186] = 'o'; $replaces[188] = '14'; $replaces[189] = '12'; $replaces[190] = '34'; $replaces[192] = 'A'; $replaces[193] = 'A'; $replaces[194] = 'A'; $replaces[195] = 'A'; $replaces[196] = 'A'; $replaces[197] = 'A'; $replaces[198] = 'AE'; $replaces[199] = 'C'; $replaces[200] = 'E'; $replaces[201] = 'E'; $replaces[202] = 'E'; $replaces[203] = 'E'; $replaces[204] = 'I'; $replaces[205] = 'I'; $replaces[206] = 'I'; $replaces[207] = 'I'; $replaces[208] = 'D'; $replaces[209] = 'N'; $replaces[210] = 'O'; $replaces[211] = 'O'; $replaces[212] = 'O'; $replaces[213] = 'O'; $replaces[214] = 'O'; $replaces[215] = 'X'; $replaces[216] = 'O'; $replaces[217] = 'U'; $replaces[218] = 'U'; $replaces[219] = 'U'; $replaces[220] = 'U'; $replaces[221] = 'Y'; $replaces[222] = 'p'; $replaces[223] = 'b'; $replaces[224] = 'a'; $replaces[225] = 'a'; $replaces[226] = 'a'; $replaces[227] = 'a'; $replaces[228] = 'a'; $replaces[229] = 'a'; $replaces[230] = 'ae'; $replaces[231] = 'c'; $replaces[232] = 'e'; $replaces[233] = 'e'; $replaces[234] = 'e'; $replaces[235] = 'e'; $replaces[236] = 'i'; $replaces[237] = 'i'; $replaces[238] = 'i'; $replaces[239] = 'i'; $replaces[240] = 'o'; $replaces[241] = 'n'; $replaces[242] = 'o'; $replaces[243] = 'o'; $replaces[244] = 'o'; $replaces[245] = 'o'; $replaces[246] = 'o'; $replaces[248] = 'o'; $replaces[249] = 'u'; $replaces[250] = 'u'; $replaces[251] = 'u'; $replaces[252] = 'u'; $replaces[253] = 'y'; $replaces[254] = 'p'; $replaces[255] = 'y'; for($c = 0; $c <= 255; $c++){ $replaces_to[$c] = chr($c); } /* Repeat simbols */ foreach(array('-', '_', '.') as $replace){ foreach($tofilter as $filter){ } } } return $return; }
Asó puedes ingresar carácteres basura e igual te lo va a transformar.
|