#1 9 may 12, 18:09
Necesito a cocos de PHP para una función
Hola, necesitaba crear una función que pudiese hacer lo siguiente.
Teniendo un string de este tipo:
$string = 'Avda andalucía 34 (1990) [amuebaldo, garaje][terraza.](muy bonito)'
Me tiene que separar la dirección (Avda andalucía 34) de las características sabiendo que la dirección puede estar separada por "
.[" (sin las comillas, son parentesis, punto y corchetes) y una vez separada la dirección de las características tengo que sacar las características que a mi me interesen, digamos que paso un string que ponga "garaje,terraza,amueblado,balcon,climatizado,despensa" y si encuentra alguna de estas palabras que me devuelva dichas características.
Resumiendo yo al mandarle ese string junto con las características a la función me tiene que devolver lo siguiente:
Supongo que estaré oxidado pero la forma de solucionarlo me parece que es muy engorrosa, me gustaría simplificarlo todo al máximo utilizado las funciones de php que se podrían utilizar para algo tan especifico como eso.
Un saludo a todos y muchas gracias.
PD: me acaban de sacar una muela y me duele mucho :S igual no puedo pensar con claridad :/
Teniendo un string de este tipo:
$string = 'Avda andalucía 34 (1990) [amuebaldo, garaje][terraza.](muy bonito)'
Me tiene que separar la dirección (Avda andalucía 34) de las características sabiendo que la dirección puede estar separada por "
.[" (sin las comillas, son parentesis, punto y corchetes) y una vez separada la dirección de las características tengo que sacar las características que a mi me interesen, digamos que paso un string que ponga "garaje,terraza,amueblado,balcon,climatizado,despensa" y si encuentra alguna de estas palabras que me devuelva dichas características.Resumiendo yo al mandarle ese string junto con las características a la función me tiene que devolver lo siguiente:
Array
(
[direccion] => Avda andalucía 34
[caracteristicas] => Array
(
[0] => amuebaldo
[1] => garaje
[2] => terraza
)
)Supongo que estaré oxidado pero la forma de solucionarlo me parece que es muy engorrosa, me gustaría simplificarlo todo al máximo utilizado las funciones de php que se podrían utilizar para algo tan especifico como eso.
Un saludo a todos y muchas gracias.
PD: me acaban de sacar una muela y me duele mucho :S igual no puedo pensar con claridad :/
#2 9 may 12, 18:12
Usa el coco y google, creo que hay información de sobras en internet para hacer eso, busca las funciones de cadenas en php y aprende a usarlas http://php.net/manual/en/ref.strings.php
#3 9 may 12, 18:38
Tiene más pinta de requerir expresiones regulares. Estoy muy pez con ellas, pero sé que son mágicas e ideales para lo que quieres hacer ahí. Así que tira de google y busca también un poquito de expresiones regulares.. o espera a una alma caritativa que te eche un cable en lugar de una indicación >_<
- BLZKZ

- online
#5 9 may 12, 19:10
#4 Según entiendo a #1 , el tipo de separador puede variar, así como la cantidad de argumentos o incluso pasar argumentos falsos o de moralla entre medias.
Se puede hacer con manejo de strings y un chorrito de condicionales, pero opino que con regex se puede hacer algo fino y optimizado. Entraña mucha más complicación si no dominas la expresiones regulares, pero sólo ofrezco alternativas
Se puede hacer con manejo de strings y un chorrito de condicionales, pero opino que con regex se puede hacer algo fino y optimizado. Entraña mucha más complicación si no dominas la expresiones regulares, pero sólo ofrezco alternativas
- BLZKZ

- online
#7 9 may 12, 19:29
La separación de la dirección lo tengo resuelto, se me vino a la cabeza después de tomarme un paracetamol xD, es esta:
Ahora estoy atascado en lo de buscar las características y componer el array con ellas, estaba pensando en hacer otro explode con el string separandolo por espacios, después recorrer el array y con un switch case verificar opcion a opcion, pero seguro que se puede hacer de una forma mas sencilla :/
PD: igual si me tomo otro paracetamol... o 2 o 3... xD
$separador = array('.','(','[');
$dir = explode('.',strtolower($titulo));
foreach($separador as $d1){
$dir = explode($d1,$dir[0]);
}
echo $dir[0];Ahora estoy atascado en lo de buscar las características y componer el array con ellas, estaba pensando en hacer otro explode con el string separandolo por espacios, después recorrer el array y con un switch case verificar opcion a opcion, pero seguro que se puede hacer de una forma mas sencilla :/
PD: igual si me tomo otro paracetamol... o 2 o 3... xD
Mensaje editado 2 veces. Última edición 10 may 12, 00:18
- eXtreM3

- online
#9 10 may 12, 08:08
#8 Pero cómo eres tan puto amo de currarte SIEMPRE los códigos de los que preguntamos algo? En serio xD
offtopic: #6 mira lo que me he encontrado por ahí xDDD
http://board.ogame.com.es/board895-...decaracteresphp/
(no quiero hacer spam hacia este foro, simplemente me ha hecho gracia ver que allí no te conocía y después aqui con el mismo avatar y todo jajajaja)
con lo facil que era con un utf8_decode xD
offtopic: #6 mira lo que me he encontrado por ahí xDDD
http://board.ogame.com.es/board895-...decaracteresphp/
(no quiero hacer spam hacia este foro, simplemente me ha hecho gracia ver que allí no te conocía y después aqui con el mismo avatar y todo jajajaja)
con lo facil que era con un utf8_decode xD
- BLZKZ

- online
#12 12 may 12, 13:45
#8 lo solucione con unos bucles sin utilizar preg_match, aquí posteo la solución y es la que actualmente utilizo, yo es que soy muy reacio a utilizar regex es algo que no me gusta nada y como la programación tiene la virtud que para un mismo resultado se puede utilizar infnitas soluciones pues:
Muchas gracias a todos!!!
function todasputas($string){
$titulo = utf8_decode($string); //$cadena='Avda andalucía 34 (1990) [amueblado, garaje][terraza.](muy bonito)';
$perroflauta = array('(','[','-','.');
$direccion = explode(',',strtolower($titulo));
foreach($perroflauta as $d1){
$direccion = explode($d1,$direccion[0]);}
$perroflauta = array('garaje','terraza','amueblado','balcon','climatizado','despensa');
foreach($perroflauta as $d1){
if(strpos(strtolower(utf8_decode($titulo)),$d1))
$c[] = $d1;}
$final['dir'] = $direccion[0];
$final['car'] = $c;
return $final;}Muchas gracias a todos!!!
Favoritos
1