Etiquetado de la entrada: cadenas


24
Feb 10

Procesar cadena en BBCode para pasar a HTML: básico

En esta ocasión, una función para convertir una cadena en formato BBCode (Bulletin Board Code), típico de los foros, y convertirlos a html para mostrarlos.
Este parser nos permite almacenar los textos con código diferente al HTML y así evitar que alguien guarde contenido en javascript o sentencias HTML que puedan perjudicar.

function BBCodeAHTML( $cadena ) {
    // Eliminamos etiquetas HTML que pueda contener la cadena
    $cadena = strip_tags( $cadena );
    // Ahora con la cadena limpia de etiquetas HTML definimos las etiquetas BBCode que queremos tener
    $etiquetas = array(
        'N' => array( 'type'=>BBCODE_TYPE_NOARG, 'open_tag'=>'<strong>', 'close_tag'=>'</strong>' ), // Negrita
        'C' => array( 'type'=>BBCODE_TYPE_NOARG, 'open_tag'=>'<i>', 'close_tag'=>'</i>' ), // Negrita
        'S' => array( 'type'=>BBCODE_TYPE_NOARG, 'open_tag'=>'<span style="text-decoration:underline">', 'close_tag'=>'</span>' ), // Subrayado
        'D' => array( 'type'=>BBCODE_TYPE_NOARG, 'open_tag'=>'<span style="text-align:right">', 'close_tag'=>'</span>' ), // Alinieación Derecha
        'I' => array( 'type'=>BBCODE_TYPE_NOARG, 'open_tag'=>'<span style="text-align:left"', 'close_tag'=>'</span>' ), // Izquierda
        'M' => array( 'type'=>BBCODE_TYPE_NOARG, 'open_tag'=>'<span style="text-align:rcenter"', 'close_tag'=>'</span>' ), // Centrada
    );
    // Eltras etiquetas son: [N] Para negrita, [C] Para cursiva, [S] Para subrayado, [D], [I], [M] Para las alineaciones, derecha, izquierda o medio

    // Procesamos los cambios
    $parser = bbcode_create( $etiquetas );
    $cadena = bbcode_parse( $parser, $cadena );
    // Eliminamos el resto de las etiquetas que pudiera haber
    $cadena = preg_replace( '[\[(.+)\]]', '', $cadena );
    // Devolvemos la cadena limpia y traducida al HTML
    return( $cadena );
}

23
Feb 10

Eliminar caracteres “extraños” de una cadena en PHP

El comentario de Domiscopio, en el post de sanitizar un título, e ha inspirado y pongo ahora una función para “super sanitizar” una cadena de texto para eliminar los caracteres que nunca deben ir en un título como !¡?¿¬, etc…
Una vez hayamos empleado la función de sanitizar le pasamos la siguiente y eliminará todos los caracteres NO estándar.

function reSanitizar( $titulo ) {
     return( ereg_replace( '[^ A-Za-z0-9_-]', '', $titulo );
}

Esta función lo que hace básicamente es buscar la espresión regular ‘[^ A-Za-z0-9_-]‘ en el título, y su traducción al castellano sería “Buscar los caracteres que NO son de la A a la Z, de la a a la z, del 0 al 9 y guiones. Esta función sería para usarla después de la primera.