Ver Mensaje Individual
  #4 (permalink)  
Antiguo 21/11/2014, 21:00
Malekith
 
Fecha de Ingreso: abril-2006
Mensajes: 105
Antigüedad: 18 años
Puntos: 11
Respuesta: Creando etiquetas dentro de un string

Solucionado chicos!! voy a poner el código por si le viene bien a alguien, y por si veis que le falta algún fleco o algo que podría mejorar.

Código PHP:
$regex '/\[(\w+)\]([^[\]]+?)\[\/\\1\]/s';
function 
procesar_tags($matches) {
  list(, 
$tagName$tagValue) = $matches;

    if(
$tagName == "imagen"){
        
$argumentos explode(","$tagValue);
        
$id $argumentos[0];
        
$dimensiones $argumentos[1];
        
$alineado $argumentos[2];
        
$ampliacion $argumentos[3];

            global 
$conexion;
            
$resultado mysqli_query($conexion"select * from imagenes where id=$id") or die(mysqli_error());
            
$contenido mysqli_fetch_array($resultado);
            
$urlimagen $contenido['url'];
            
$coincidencias=mysqli_num_rows($resultado);

            if(
$coincidencias!=0){
                if(
$alineado == "centro") { 
                
$estilo "display:block; margin:auto;";
                } elseif(
$alineado == "derecha") {
                    
$estilo "float:right;";
                } else {
                    
$estilo "float:left;";
                }
                if (
$dimensiones == "reducido") {
                    
$ruta "./imagenes/mini/mini-";
                } else {
                    
$ruta "./imagenes/";
                }
                if(
$ampliacion == "ampliar"){
                    
$resultado "<a href='./imagenes/$urlimagen' rel='lightbox'><img class='imagenes' style='$estilo' src='$ruta$urlimagen'></a>";
                } else {
                    
$resultado "<img class='imagenes' style='$estilo' src='$ruta$urlimagen'>";
                }

                
$salida=$resultado;

            } else { 
$salida="La imagen especificada no se existe, por favor, corrige el error"; }

    } else {
        
$salida "<strong>Comando desconocido</strong>";
    }

  return 
$salida;
}

$entrada '[imagen]80,reducido,centro,aumentar[/imagen] texto seguido de otro comando, pero esta vez dira que es desconocido
porque de momento la funcion procesar_tags() solo admite imagenes [x]tag que va a dar error[/x]'
;

$salida preg_replace_callback($regex'procesar_tags'$entrada);
echo 
$salida
He hecho todo el proceso en la misma función, lo que me ahorra muchas líneas de código, muchísimas gracias pateketrueke.

Con ésto, al comprimir tanto el código, cuando corto el texto, corto prácticamente lo que realmente es texto, y toda la etiqueta de las imágenes no ocupa lugar, luego desde php leo el contenido del texto recortado y lo adapto al html.

De momento solo he hecho que funcione con imagenes, pero más adelante pondré etiquetas de enlaces y demás. ¿Habrá algún problema si una etiqueta contiene a otra? bueno, ya veré ésto más adelante.

Un saludo y muchas gracias ;)

Última edición por Malekith; 25/11/2014 a las 16:35