Ver Mensaje Individual
  #3 (permalink)  
Antiguo 19/06/2011, 14:09
okr_a
 
Fecha de Ingreso: junio-2011
Mensajes: 3
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: Duda con Expresiones Regulares

Muchas gracias Triby!!! la verdad que sí, puedo aprovechar el preg_matches_all para hacer otro ciclo... Probé lo que me dijiste, pero no puedo usar el $match del foreach como patrón para el preg_replace (me da error porque no es un string)...

Entonces probé esto:

Código PHP:
function reemplaza_botonera($array_links){
    global 
$plantilla;
    
$patron "~\{Botonera:(.*?)\}(.*?)\{:Botonera\}~s";
    
    
preg_match_all($patron$plantilla$matchesPREG_SET_ORDER);
    
    foreach(
$matches as $match){
        
        
$patron "~\{Botonera:$match[1]\}(.*?)\{:Botonera\}~s";
        
        
preg_match_all($patron$plantilla$submatchesPREG_SET_ORDER);
        
        
$reemplazo '';
        
        if(
$array_links){
        foreach(
$array_links as $link){
            
            
$subpatron = array("{Botonera_url}""{Botonera_tag}");
            
$subreemplazo = array($link['url'], $link['tag']);
            
$reemplazo .= str_replace($subpatron$subreemplazo$submatches[0][1]);
            
        }
        }
        
        
$plantilla preg_replace($patron$reemplazo$plantilla);

    }
    



Esto CASI resuelve el problema, pero en realidad para hacerlo funcionar, estoy generando un nuevo patrón con el resultado del match, ya que identifiqué a las dos botoneras, de esta forma:

Código:
<div id="botonera1">
    {Botonera:UNO}
    <a href="{Botonera_url}">{Botonera_tag}</a>
    {:Botonera}
</div>

<ul id="botonera2">
    {Botonera:DOS}
    <li><a href="{Botonera_url}">{Botonera_tag}</a></li>
    {:Botonera}
</ul>
Y quisiera resolver esto sin tener que identificar las botoneras, sino con el código que puse primero... Se entiende?