Ayuda script php q "busca" (exp. regulares?)

c0c0l0c0

No tengo ni idea de expresiones regulares. He estado mirando a ver si podia sacar esto yo solito pero lo veo complicado para mi pero seguro que luego es una chorrada de 3 lineas. Las tiros van por el uso de un preg_match me parece. He intentado modificar un script que dada una url te dice el dominio pero no hay suerte porque no entiendo cuando empiez con los simbolos[]*./$?. :(

A ver si alguien me puede echar una mano con un script que dado una variable con un texto, por ejemplo "El hijo de luis tiene 6 manzanas y 4 peras", pueda yo sacar un dato introduciendo el texto que le sigue y el que le precede. Con el ejemplo de antes, si quiero sacar el numero de manzanas introduciendo el "tiene" y el "manzanas" me salga "6" como resultado.

No se si me explico :S

Muchas gracias

M

Hola ;)

Mira, lo mejor que puedes hacer es estudiarte los ejemplos de php.net que debe ser tu dios si quieres aprender algo de php, pero te doy un curso rápido de expresiones regulares.

preg_match /buscas un solo resultado/
preg_match_all / + de 1 resultado y linea/

En tu ejemplo:
$texto='el xorizo ese de las manzanas que te has colocado';
preg_match('#tiene (\d*) manzanas#si',$texto,$resultados);

Tienes que estudiarte los operadores, pero \d significa cualquier carácter numérico, el * significa 0 o mas caracteres,

Dada una frase, lo que pones entre () en la expresión regular va a ser lo que te devuelva la búsqueda, en este caso:

el print_r de $resultados te daría [0]=> (la frase entera donde ha hallado resultados; y [1]=> el primer resultado encontrado.

Ten cuidado con las expr que atrapan xDD

c0c0l0c0

el preg_match solo te busca el primer resultado
?

M

Soy un poco tosco para explicarme ;)

Pero en resumen Preg_match() se detiene despues de la primera coincidencia,Por el contrario, preg_match_all() continuará hasta llegar al final de asunto.

Si me pones un ejemplo concreto intentaré explicar mejor xq usar una y no la otra.

Saludos

c0c0l0c0

Te pongo enq ue lo quiero usar. Hay un codigo fuente en el que hay un div con una id especial. Quiero que dado el codigo fuente me saque lo que hay dentro del div.

"<div id="lol">873</div>"

Quiero que dado el "<div id="lol">" y el "</div>" me de el 873. Todo ello teniendo en cuenta que puede haber mas "</div>" por el codigo pero no mas "<div id="lol">"

M

preg_match_all('#<div id="lol">(.+?)<\/div>#si',$resultados);
y print_r($resultados);

De todas formas, si no estas dampeando datos y la web es tuya adentrarte en ajax y utiliza jquery.

Saludos.

Usuarios habituales