| 
	
		|  Autor | Tema: limpiar un str de signos raros  (Leído 9,238 veces) |  
	| 
			| 
					
						| Kase 
								       
								
								 Desconectado 
								Mensajes: 1.288
								
								 
								programa bonito ¬¬
								
								
								
								
								
								     | 
 
necesito limpiar un string de cualquier signo que no sea letra o numero
 por ejemplo
 $str = '¿cual es la raiz de 42?';
 a
 $str = 'cual es la raiz de 42';
 
 
 alguna idea de como hacerlo de la forma mas eficiente posible?
 
 
 |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| Feedeex 
								
								 Desconectado 
								Mensajes: 173
								
								
								
								
								
								   | 
 
function comprobar_cadena($str) {$caracteres_permitidos = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
 for ($i = 0; $i < strlen($str); $i++) {
 if (strpos($caracteres_permitidos, substr($str,$i,1)) == FALSE) {
 return false;
 } else {
 return true;
 }
 }
 }
Lo llamás así: $variable = comprobar_cadena($str);if ($variable == TRUE) {
 echo "Existen signos no permitidos";
 } else {
 echo "Todo ok";
 }
 
 
 |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| Kase 
								       
								
								 Desconectado 
								Mensajes: 1.288
								
								 
								programa bonito ¬¬
								
								
								
								
								
								     | 
 
Gracias!!  estaba buscando algo mas estilo python, pero  php se queda corto en ese aspecto =<
 y esque demaciadas comparaciones causa mas tiempo de ejecuccion y de procesamiento.
 
 almenos es un codigo limpio... ^^
 muchas gracias
 |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| Kasi 
								
								 Desconectado 
								Mensajes: 76
								
								   | 
 
Prueba mejor con una expresión regular y sustituye los resultados por ''. Con esta puede que te sirva, haz pruebas y ya nos dirás. $reg = '/\W\s/g';$str = 'Lo que tengas ? que * buscar';$rep = '';
 La expresión es muy simple y se puede mejorar, pero bueno para un primer apaño quizá te sirva. Te dejo esta página, que a lo mejor te sirve de ayuda para creartelas.http://gskinner.com/RegExr/ Un saludo |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| Spider-Net 
								       
								
								 Desconectado 
								Mensajes: 1.165
								
								 
								Un gran poder conlleva una gran responsabilidad
								
								
								
								
								
								     | 
 
function alfanumeric($string){		return $string;}
 Recibe una cadena y devuelve la cadena sólo con símbolos alfanuméricos, nada de caracteres especiales. Su uso. $str = alfanumeric("¿cual es la raiz de 42?");echo $str;
 Devuelve: cual es la raiz de 42 |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| Shell Root | 
 
@Spider-Net, creo que falta agregarle un \s para los espacios, no?Mejor usar preg_replace, ya que ereg_replace ésta obsoleta.
 |  
						| 
								|  |  
								| « Última modificación: 12 Abril 2011, 22:14 pm por Shell Root » |  En línea | 
 
 Te vendería mi talento por poder dormir tranquilo. |  |  |  | 
			| 
					
						| ~ Yoya ~ 
								Wiki  Desconectado 
								Mensajes: 1.125
								
								   | 
 
/(?i)(?:[^\w]*)(?-i)/
 Puedes usar este patrón junto a preg_replace(). Que en vez de eliminar caracteres especifico, elimino cualquier carácter que no sea alfanumérico . Ejemplo: <?php?> 
 Salida: Saludos. |  
						| 
								|  |  
								|  |  En línea | 
 
 Mi madre me dijo que estoy destinado a ser pobre toda la vida.Engineering is the art of balancing the benefits and drawbacks of any approach.
 |  |  |  | 
			| 
					
						| Castg! 
								Wiki  Desconectado 
								Mensajes: 1.191
								
								     | 
 
Yo hice esta función que crea un alias de un texto. Lo uso para cuando voy a ingresar un dato a la base de datos (un post de un blog por ejemplo, guardo el nombre Un post de programación!! [PHP][/i] y el alias un-post-de-programacion-php ). Te dejo la función y editala a tu gusto, pero practicamente utiliza lo que ya te dijeron: Esta es la función para que pegues en el archivo function txtToAlias($flotaTitle='',$flotaLength=false){preg_match_all('/[a-z0-9\-]+/',strtr(preg_replace('/\s+/','-',trim(strtolower($flotaTitle))), "àáâãäåèéêëìíîïòóôõöùúûüñ", "aaaaaaeeeeiiiiooooouuuun"),$return);
 return ($flotaLength)?substr(implode($return[0]),0,$flotaLength):implode($return[0]);
 }
Esta está resaltada pero hay problemas con àáâãäåèéêëìíîïòóôõöùúûüñ function txtToAlias($flotaTitle='',$flotaLength=false){}
 |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| Nakp 
								casi es 
								Ex-Staff
								    Desconectado 
								Mensajes: 6.336
								 
								he vuelto :)
								
								
								
								
								
								     | 
 
pues IMHO casi la mejor solucion es la de kasi agregando \d para los numeros    pero negativo eh ¬¬ $reg = '/[^\w\d\s]/i';$buffer = 'asdf8a7s6d5f4asdf#456789(&335GG/X>%X57'; 
 devuelve: asdf8a7s6d5f4asdf456789335GGXX57 agregale espacios y sigue funcionando   |  
						| 
								|  |  
								|  |  En línea | 
 
 Ojo por ojo, y el mundo acabará ciego. |  |  |  | 
			| 
					
						| dimitrix | 
 
Como narices esto: puede referirse a letras y números :-| |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  |  |  
 
	
 
 
				
					
						| Mensajes similares |  
						|  | Asunto | Iniciado por | Respuestas | Vistas | Último mensaje |  
						|   |   | Diez signos que indican que tu ordenador está infectado por un virus Noticias
 | wolfbcn | 0 | 2,148 |  5 Agosto 2010, 13:47 pm por wolfbcn
 |  
						|   |   | Programa que sepa los signos que hay que poner en una igualdad
							« 1 2 » Programación C/C++
 | javirk | 18 | 8,137 |  10 Febrero 2012, 04:33 am por do-while
 |  
						|   |   | problema leyes de los signos Programación Visual Basic
 | asdexiva | 1 | 2,222 |  27 Febrero 2014, 02:17 am por raul338
 |  
						|   |   | MotionSavvy, traductor de lenguaje de signos a voz Noticias
 | wolfbcn | 1 | 2,187 |  19 Mayo 2014, 14:16 pm por Gh057
 |  
						|   |   | sustituir signos con Textman en batch Scripting
 | **Aincrad** | 2 | 3,163 |  7 Febrero 2018, 02:28 am por **Aincrad**
 |    |