Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Darkkz

#1
Cita de: madpitbull_99 en 10 Septiembre 2011, 19:06 PMMira si esto te sirve, es el BBCode Parser que viene con el editor Markitup.

Código (php) [Seleccionar]

<?php
        
// BBCode to find...
        
$in = array(     '/\[b\](.*?)\[\/b\]/ms',       
                                         
'/\[i\](.*?)\[\/i\]/ms',
                                         
'/\[u\](.*?)\[\/u\]/ms',
                                         
'/\[img\](.*?)\[\/img\]/ms',
                                         
'/\[email\](.*?)\[\/email\]/ms',
                                         
'/\[url\="?(.*?)"?\](.*?)\[\/url\]/ms',
                                         
'/\[size\="?(.*?)"?\](.*?)\[\/size\]/ms',
                                         
'/\[color\="?(.*?)"?\](.*?)\[\/color\]/ms',
                                         
'/\[quote](.*?)\[\/quote\]/ms',
                                         
'/\[list\=(.*?)\](.*?)\[\/list\]/ms',
                                         
'/\[list\](.*?)\[\/list\]/ms',
                                         
'/\[\*\]\s?(.*?)\n/ms'
        
);
        
// And replace them by...
        
$out = array(    '<strong>\1</strong>',
                                         
'<em>\1</em>',
                                         
'<u>\1</u>',
                                         
'<img src="\1" alt="\1" />',
                                         
'<a href="mailto:\1">\1</a>',
                                         
'<a href="\1">\2</a>',
                                         
'<span style="font-size:\1%">\2</span>',
                                         
'<span style="color:\1">\2</span>',
                                         
'<blockquote>\1</blockquote>',
                                         
'<ol start="\1">\2</ol>',
                                         
'<ul>\1</ul>',
                                         
'<li>\1</li>'
        
);
        
$text preg_replace($in$out$text);
?>




Con este sistema no tengo que hacer el follón del contador. Es más simple de lo que pensaba :-*

Resuelto, ¡Muchas gracias!
#2
Hola, he utilizado el buscador y no he encontrado mi duda.

Estoy tratando de hacer a mano una comprobación de tags de BBCode, que compruebe que las etiquetas abiertas de cada tipo estén luego cerradas.
He intentado utilizar tanto eregi() como preg_match(), pero no consigo utilizarlas correctamente. Según he oído eregi() está deprecated.

Sería algo así:

Código (php) [Seleccionar]
function str_postea($cadena1,$cadena2,$texto) {
$contador=0;
while(preg_match('/'.$cadena1.'/',$texto))
$contador++;
while(preg_match('/'.$cadena2.'/',$texto))
$contador--;
while($contador>0) {
$texto = $texto.$cadena2;
$contador--;
}
while($contador<0) {
$texto = str_replace($cadena2,"",$texto);
$contador++;
}

return $texto;
}

Código (php) [Seleccionar]
$texto = str_postea("[b]","[/b]",$texto);

El problema es que los primeros while de la función son infinitos, pues si existe la cadena, existe siempre. ¿Alguna idea de cómo podría arreglarlo?

Gracias.