[Duda php] Expresiones regulares

Buenas, llevo toda la tarde practicando php porque mañana tengo examen y he dado con un ejercicio que no consigo hacer. El ejercicio consiste en sustituir todas las etiquetas a que estén dentro de una etiqueta p.Yo consigo sustituir todas las etiquetas a pero no consigo que sean solo las que estén dentro de p. El código es este:
<?php
$cadena_original= "<p><a>juan</a> <a>pepe</a> <a>luis</a> </p> ";
$patron="/<a>(.*?)<\/a>/";
$reemplaza="/<a>\\1<\/a>/";

$cadena_resultante=preg_replace ($patron,$reemplaza,$cadena_original,-1);
print $cadena_resultante;
?>



A ver si me podéis echar un cable.Saludos.
Creo que lo que te pide el ejercicio es que te crees una función que dada una cadena te sustituya las cadenas que quieras.
El ejemplo que has puesto no te sirve porque no controlas las <p></p>, lo puedes hacer a la antigua usanza, leer carácter a carácter.
Karaculo escribió:lo puedes hacer a la antigua usanza, leer carácter a carácter.

O eso crear temporales con substring y luego reemplazar lo que quiera.
...O encontrar la posición de aparición de esas etiquetas y luego sustituir desde el final de la primera al inicio de la última...

Tiene muchas formas de hacer eso.
Con expresiones es lo mejor, pero en un principio también más complicado.

Yo las he tocado muy poco pero son una pasada. Para hacer ciertas validaciones en las últimas aplicaciones que he programado me ha venido de perlas.
3 respuestas