Expresion regular

sukhur
15 de Julio del 2005
Hola amigos/as !

Tengo un problemilla con la extraccion de una serie de cadenas de un texto y espero que alguien sepa resolverlo, el problema en cuestion es el siguiente:

Supongamos que tenemos el siguiente texto

{?cuatro}
Valor de cuatro
{?cuatrocientos}
Valor de cuatrocientos
{/?}
{/?}

Creo que esta claro el ejemplo tenemos algo asi como una apertuta llamada "{?cuatro}" con su cierre "{/?}" y dentro de este esta "{?cuatrocientos}" y su cierre "{/?}".

Dicho esto la intencion es extraer, por medio de preg_match_all o alguna de las funciones de expresiones regulares, desde "{?cuatro}", texto que va entre apertura y cierre, hasta el segundo "{/?}".

Gracias de antemano.

Loop
15 de Julio del 2005
Si es que entiendo plenamente lo que quieres hacer esto generará problemas ...

En caso de que se haga

{?cuatro}valor{?cuatrocientos}otro valor{/?}{/?}

Cuál es cuál ?

Si por ejemplo deseas reemplazar {?cuatro}{/?} por
<strong> </strong>

El ejemplo mostraría

<strong>valor<strong>otro valor</strong></strong>

Lo que puedes hacer es por ejemplo

{?cuatro}valor{/?cuatro}

y de esta forma el script funcionaría adecuadamente y se hace más o menos así ..........

<?php

$expresion="{?cuatro}Valor {/?cuatro}";

$expresion=preg_replace("#{?cuatro}(.*?){/?cuatro}#si","<strong>\1</strong>",$expresion);

echo $expresion; // manda <strong>Valor</strong>
?>

¡ Saludos !