Autor Tema: [Ayuda] Expresiones regulares  (Leído 346 veces)

Desconectado nmartin021

  • PHPero Avanzado
  • ****
  • Mensajes: 250
  • Karma: 9
    • Ver Perfil
[Ayuda] Expresiones regulares
« en: 23 de Octubre de 2011, 04:13:34 am »
Hola!

Estoy haciendo un sistema de bbcodes en el que puse citas, para poder citar otros comentarios. Todo bien hasta que con esto:
<?php
$text 
preg_replace(&#39;/\[quote\](.+)\[\/quote\]/Usi&#39;, &#39;<blockquote><div class="quote">Cita</div><div class="quote_b"><p>\\1</p></div></blockquote>&#39;, $text);
?>

En vez de que quede un quote dentro de otro, se desfigura. Para conseguir lo que quiero uso esto:
<?php
while(preg_match($quote$text))
	
	
$text preg_replace($quote$replace$text); // $quote y $replace son expresiones regulares
?>

Pero no quiero hacerlo con un while porque gasta más RAM. ¿Hay algún modo de hacer lo mismo que el while solo que con una expresión regular?

Saludos, y gracias.

Comunidad PHPeros

[Ayuda] Expresiones regulares
« en: 23 de Octubre de 2011, 04:13:34 am »

Desconectado westwest

  • PHPero Master
  • ******
  • Mensajes: 2.837
  • Karma: 104
  • Sexo: Masculino
    • Ver Perfil
Re:[Ayuda] Expresiones regulares
« Respuesta #1 en: 23 de Octubre de 2011, 11:44:23 am »
Utilizando preg_replace_callback() puedes lograrlo. De hecho, en la página de php.net donde describen la función hay un ejemplo.

http://es.php.net/manual/es/function.preg-replace-callback.php

Desconectado nmartin021

  • PHPero Avanzado
  • ****
  • Mensajes: 250
  • Karma: 9
    • Ver Perfil
Re:[Ayuda] Expresiones regulares
« Respuesta #2 en: 23 de Octubre de 2011, 18:35:56 pm »
Utilizando preg_replace_callback() puedes lograrlo. De hecho, en la página de php.net donde describen la función hay un ejemplo.

http://es.php.net/manual/es/function.preg-replace-callback.php
¿Podrías explicarlo un poco? Porque esto hace un callback a una función y yo no tengo ninguna función para las citas.

Saludos.

Desconectado westwest

  • PHPero Master
  • ******
  • Mensajes: 2.837
  • Karma: 104
  • Sexo: Masculino
    • Ver Perfil
Re:[Ayuda] Expresiones regulares
« Respuesta #3 en: 23 de Octubre de 2011, 21:57:39 pm »
¿Podrías explicarlo un poco? Porque esto hace un callback a una función y yo no tengo ninguna función para las citas.

Saludos.
Prueba a leer el último ejemplo, que trata de exactamente lo que quieres hacer.