Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Buscar texto en variable y devolver los siguientes caracteres

Estas en el tema de Buscar texto en variable y devolver los siguientes caracteres en el foro de PHP en Foros del Web. Buenas, Estoy intentando averiguar la forma de obtener los siguientes caracteres dentro de una variable. Me explico mejor: Supongamos que tengo lo siguiente: $texto= "nombre: ...
  #1 (permalink)  
Antiguo 10/11/2014, 18:28
 
Fecha de Ingreso: noviembre-2014
Mensajes: 8
Antigüedad: 9 años, 6 meses
Puntos: 0
Buscar texto en variable y devolver los siguientes caracteres

Buenas,

Estoy intentando averiguar la forma de obtener los siguientes caracteres dentro de una variable. Me explico mejor:

Supongamos que tengo lo siguiente:
$texto= "nombre: Juan, apellido: Perez"; (es decir, una cadena de texto)
Y ahora quiero que busque "nombre: " y me devuelva por ejemplo los 5 caracteres después de "nombre: "; es decir, me devolvería "Juan,".

He probado con la función strpos, pero ésta solo me devuelve la posición donde empezaría lo que yo quiero buscar (que en este ejemplo, al ser al principio, sería 0)
¿Puedo de alguna forma decirle que me devuelva la palabra siguiente? (o un numero determinado de caracteres tras esa búsqueda)

Un saludo!
  #2 (permalink)  
Antiguo 11/11/2014, 02:26
 
Fecha de Ingreso: julio-2013
Mensajes: 87
Antigüedad: 10 años, 10 meses
Puntos: 9
Respuesta: Buscar texto en variable y devolver los siguientes caracteres

Si haces lo siguiente lo tendrías:

Código PHP:
Ver original
  1. $texto= "nombre: Juan, apellido: Perez";
  2.  
  3. // imagino que no siempre será nombre lo que quieras buscar
  4. $busqueda = 'nombre';
  5.  
  6. // sumamos a la primera posición que ocupa el texto a buscar su longitud
  7. $pos = strpos($texto, $busqueda)+strlen($busqueda);
  8.  
  9. echo substr($texto, $pos, 5); // muestra ": Jua"
  10.  
  11. echo substr($texto, $pos+2, 5); // muestra "Juan,"

Sin embargo, si lo tienes siempre en esta estructura, para sacar los nombres y apellidos no te aconsejo hacer búsquedas en los string sinó dividírtelos con la función explode, primero por la ',' y así tener un array con el primer elemento el nombre y el segundo el apellido, y después cada uno de estos elementos dividirlos con explode por ':'. Te dejo el ejemplo sencillito:

Código PHP:
Ver original
  1. $texto= "nombre: Juan, apellido: Perez";
  2. $arr = explode(',', $texto);
  3. $arrnom = explode(':', $arr[0]);
  4. echo trim($arrnom[0]).'='.trim($arrnom[1]).'<br>';
  5. $arrape = explode(':', $arr[1]);
  6. echo trim($arrape[0]).'='.trim($arrape[1]);

Saludos.
  #3 (permalink)  
Antiguo 11/11/2014, 16:03
 
Fecha de Ingreso: noviembre-2014
Mensajes: 8
Antigüedad: 9 años, 6 meses
Puntos: 0
Respuesta: Buscar texto en variable y devolver los siguientes caracteres

Saludos,

Gracias por tu rápida respuesta. Te comento.
Llevo una hora toqueteando el código que has puesto para intentar conseguir lo que yo busco, pero no hay forma; me rindo.
Actualmente, en la variable "$texto", tengo lo siguiente:

Código PHP:
$texto "<html>
<head>
...
<h3>Nombre: Perez Rodriguez, Juan</h3>
<h3>Telefono:...</h3>"

Y yo quiero extraer simplemente el nombre y los dos apellidos, de esta forma.
Código PHP:
$nombre "Juan";
$apellido1 "Perez";
$apellido2 "Rodriguez"
Obviamente dentro de la variable $texto existen más comas, encabezados... Así que no puedo "dividir" la cadena como has mencionado antes por una coma o dos puntos (aunque para el ejemplo que puse anteriormente funcionó a la perfección). He intententado coger los 30 caracteres siguientes y luego "limpiar" (reemplazar por nada) la variable de todos los elementos, como el <h3> o los espacios; pero no ha habido forma. Seguro que existe algo más sencillo, o con arrays, pero no encuentro la manera.

Saludos!

Última edición por polkiko19; 11/11/2014 a las 16:15
  #4 (permalink)  
Antiguo 17/11/2014, 09:07
 
Fecha de Ingreso: julio-2013
Mensajes: 87
Antigüedad: 10 años, 10 meses
Puntos: 9
Respuesta: Buscar texto en variable y devolver los siguientes caracteres

Hola, no sé exactamente cómo llegas a cargar $texto con esa información, pero en este enlace te dejo un ejemplo de cómo cargar una URL y leer uno de los elementos, en este caso los links que encuentres:

http://softontherocks.blogspot.com.e...-en-el_11.html

En tu caso, sería más o menos esto:

Código PHP:
Ver original
  1. $doc = new DOMDocument();
  2. $doc->loadHTML($texto);
  3.  
  4. $arrayh3 = $doc->getElementsByTagName("h3");

Una vez hecho esto ya tienes en $arrayh3 un array con los contenidos de las etiquetas h3. A partir de ahí ya lo tienes muy fácil leyendo si empieza por "Nombre" y manejándolo como te expliqué en la explicación anterior.

Saludos.
  #5 (permalink)  
Antiguo 21/11/2014, 17:53
 
Fecha de Ingreso: noviembre-2014
Mensajes: 8
Antigüedad: 9 años, 6 meses
Puntos: 0
Respuesta: Buscar texto en variable y devolver los siguientes caracteres

Cita:
Iniciado por ccliment Ver Mensaje
Hola, no sé exactamente cómo llegas a cargar $texto con esa información, pero en este enlace te dejo un ejemplo de cómo cargar una URL y leer uno de los elementos, en este caso los links que encuentres:

[url]http://softontherocks.blogspot.com.es/2014/11/obtener-los-links-que-vienen-en-el_11.html[/url]

En tu caso, sería más o menos esto:

Código PHP:
Ver original
  1. $doc = new DOMDocument();
  2. $doc->loadHTML($texto);
  3.  
  4. $arrayh3 = $doc->getElementsByTagName("h3");

Una vez hecho esto ya tienes en $arrayh3 un array con los contenidos de las etiquetas h3. A partir de ahí ya lo tienes muy fácil leyendo si empieza por "Nombre" y manejándolo como te expliqué en la explicación anterior.

Saludos.
Gracias por tu interés y tu respuesta. He intentado este método y también funciona.
Un saludo, y gracias otra vez! :)

Etiquetas: caracteres, devolver, siguientes, variable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:12.