Foros del Web » Programando para Internet » PHP »

Sacando información con expresiones regulares

Estas en el tema de Sacando información con expresiones regulares en el foro de PHP en Foros del Web. Estoy intentando sacar información de un archivo html que he metido en un string, de este archivo quiero sacar unos cuantos datos y estoy pensando ...
  #1 (permalink)  
Antiguo 29/06/2010, 01:16
Avatar de Neldor  
Fecha de Ingreso: enero-2010
Mensajes: 52
Antigüedad: 14 años, 3 meses
Puntos: 1
Sacando información con expresiones regulares

Estoy intentando sacar información de un archivo html que he metido en un string, de este archivo quiero sacar unos cuantos datos y estoy pensando usar expresiones regulares pero cuando me he mirado las diferentes funciones que se dispone me he dado cuenta que no hay ninguna que buscando una expresion regular devuelva un contenido, por ejemplo:

Código HTML:
<div>
<a href='www.google.es'>Link</a>
</div> 
Aquí la intención sería sacar el texto "Link" pero lo único que puedo hacer es buscar si existe "<a href='www.google.es'>.*</a>". ¿Cómo leches puedo hacerlo?

Gracias
  #2 (permalink)  
Antiguo 29/06/2010, 04:02
 
Fecha de Ingreso: septiembre-2004
Mensajes: 324
Antigüedad: 19 años, 7 meses
Puntos: 13
Respuesta: Sacando información con expresiones regulares

Esto solo devolvería un resultado:

Código PHP:
function get_string_between($string$start$end){ 
    
$string " ".$string
    
$ini strpos($string,$start); 
    if (
$ini == 0) return ""
    
$ini += strlen($start); 
    
$len strpos($string,$end,$ini) - $ini
    return 
substr($string,$ini,$len); 

 
$fullstring "<div>
<a href='www.google.es'>Link</a>
</div>"

$parsed get_string_between($fullstring"gle.es'>""</a>"); 
 
echo 
$parsed// (result = Link) 
Esto para todos los resultados:
Código PHP:
function get_all_strings_between($string,$start,$end)
{
//Returns an array of all values which are between two tags in a set of data
$strings = array();
$startPos 0;
$i 0;
//echo strlen($string)."\n";
while($startPos strlen($string) && $matched get_string_between(substr($string,$startPos),$start,$end))
{
if (
$matched == null || $matched[1] == null || $matched[1] == '') break;
$startPos $matched[0]+$startPos+1;
array_push($strings,$matched[1]);
$i++;
}
return 
$strings;
}

function 
get_string_between($string$start$end){
//$string = " ".$string;
$ini strpos($string,$start);
if (
$ini == 0) return null;
$ini += strlen($start);
$len strpos($string,$end,$ini) - $ini;
return array(
$ini+$len,substr($string,$ini,$len));

  #3 (permalink)  
Antiguo 29/06/2010, 05:19
 
Fecha de Ingreso: abril-2009
Mensajes: 162
Antigüedad: 15 años
Puntos: 6
Pregunta Respuesta: Sacando información con expresiones regulares

te recomiendo que busques un manual completo de expreciones regulares, es demaciado complejo como para aprenderse a punta de cacharreo, te lo digo como experiencia.

yo lo aria mas o menos asi para sacar solo el de 1 enlace:

Código PHP:
$var=preg_replace('@<a [^>]+>(.*)</a>@Ui','\1',$textodellink); 
existe una funcion llamada preg_match_all que te sacaria en un arreglo toda la lista de lo que quieres, pero es mas complejo

aqui te dejo un buen manual sobre expreciones regulares.
http://paginaweb2.com/post-expresion...php-parte-1-61
__________________
Manual de Javascript

Etiquetas: expresiones, regulares
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 10:51.