Foros del Web » Programando para Internet » PHP »

Patrones de búsqueda

Estas en el tema de Patrones de búsqueda en el foro de PHP en Foros del Web. Hola gente! A ver como lo explico. Empezare por un texto ejemplo. @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código HTML: Ver original < p > texto texto texto texto ...
  #1 (permalink)  
Antiguo 19/08/2012, 16:49
Avatar de iFuSiiOnzZ  
Fecha de Ingreso: junio-2012
Mensajes: 8
Antigüedad: 11 años, 10 meses
Puntos: 0
Patrones de búsqueda

Hola gente!

A ver como lo explico. Empezare por un texto ejemplo.

Código HTML:
Ver original
  1. <p>texto texto texto texto</p>
  2. <!-- IF var --><p>Texto condicionado</p><!-- END IF -->
  3. <p>texto texto texto texto</p>

Usando el siguiente patrón me detecta bien lo que quiero.
Código PHP:
Ver original
  1. '#<!-- IF (.*?) -->(.*?)<!-- END IF -->#'

Ahora si el texto en cual se busca es el siguiente
Código HTML:
Ver original
  1. <p>texto texto texto texto</p>
  2. <!-- IF var --><p>Texto <!-- var2 -->condicionado<!-- END IF--></p><!-- END IF -->
  3. <p>texto texto texto texto</p>

El patrón funciona mal (es relativo), solo detecta hasta el primero END IF.
Código HTML:
Ver original
  1. <!-- IF var --><p>Texto <!-- IF var2 -->condicionado<!-- END IF-->

De alguna forma me haría falta que cuente los tags de inicio y los de cierre para que devuelva bien, por si el mismo patrón esta imbricado.
  #2 (permalink)  
Antiguo 19/08/2012, 18:02
Avatar de asdmaster  
Fecha de Ingreso: marzo-2010
Mensajes: 98
Antigüedad: 14 años, 1 mes
Puntos: 2
Respuesta: Patrones de búsqueda

Cuales son las coincidencias que quieres capturar los var o el texto o ambos.

Tanto caracter me confunde
Código PHP:


<?php

$str1 
'<p>texto texto texto texto</p>
        <!-- IF var --><p>Texto condicionado</p><!-- END IF -->
        <p>texto texto texto texto</p>'
;
    
$pattern '/<!-- IF (.*?) -->(.*?)<!-- END IF -->/';

preg_match_all($pattern$str1$matchesPREG_SET_ORDER);

echo 
htmlentities($str1);
echo 
'<br />';
echo 
htmlentities($pattern);

echo 
'<pre>';
print_r($matches);
echo 
'</pre>';

?>
  #3 (permalink)  
Antiguo 20/08/2012, 02:26
Avatar de iFuSiiOnzZ  
Fecha de Ingreso: junio-2012
Mensajes: 8
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Patrones de búsqueda

Si, tiene que ser tanto las variable como el texto, pero creo que me he explicado fatal. Cogeré tu ejemplo que me viene de perla, si el texto es el siguiente no lo hace bien.

Código PHP:
$str1 '<p>texto texto texto texto</p>
        <!-- IF var1 --><p>Texto <!-- IF var2 -->condicionado<!-- END IF --></p><!-- END IF -->
        <p>texto texto texto texto</p>'
;
    
$pattern '/<!-- IF (.*?) -->(.*?)<!-- END IF -->/';

preg_match_all($pattern$str1$matchesPREG_SET_ORDER);

echo 
htmlentities($str1);
echo 
'<br />';
echo 
htmlentities($pattern);

echo 
'<pre>';
print_r($matches);
echo 
'</pre>'
Al haber 2 IF's imbricados (uno dentro de otro), este patrón cogería tan solo <!-- IF var1 --><p>Texto <!-- IF var2 -->condicionado<!-- END IF -->. Y debería haber cogido también el último END IF ya que es el cierre del primer IF.

Me hace falta que sepa cuantas veces se ha abierto un tag y solo detecte cuando haya detectado también las mismas veces el tag de cierre.

Etiquetas: patrones
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 17:08.