WYSIWYG Preprocessor es una biblioteca PHP sin dependencias . Es una especie de caja de herramientas para procesar áreas de texto HTML .
Las fuentes se gestionan con Composer.
composer require akibatech/wysiwygpreprocessor " 0.* "
Para el área de texto dada,
$ textarea = " Check my website http://website.com. Keep in touch at [email protected] ! " ;
Queremos transformar el enlace y la dirección de correo electrónico a etiquetas HTML.
use Akibatech Wysiwyg Processor ;
use Akibatech Wysiwyg Modifier ;
$ processor = new Processor ();
$ processor -> addModifier ( new Modifier UrlToLink )
-> addModifier ( new Modifier MailToLink )
-> process ( $ textarea );
echo $ processor -> getOutput ();
Resultados en:
Check my website < a href =" http://website.com " > http://website.com </ a > . Keep in touch at < a href =" mailto:[email protected] " > [email protected] </ a > !
Los modificadores son fácilmente personalizables.
Imagine que desea orientar todos los enlaces a una nueva página o agregarle una clase personalizada.
$ textarea = ' Check out my new site: personnal-website.com ' ;
$ modifier = new Akibatech Wysiwyg Modifier UrlToLink ();
$ modifier -> setOptions ([
' class ' => ' custom-link ' ,
' target ' => ' _blank '
])
$ processor = new Akibatech Wysiwyg Processor ();
$ processor -> addModifier ( $ modifier )
-> process ( $ textarea );
echo $ processor -> getOutput ();
Resultados en:
Check out my new site: < a href =" personnal-website.com " class =" custom-link " target =" _blank " > personnal-website.com </ a >
Clase: AkibatechWysiwygModifierBbCode
Descripción: aplique un BBCode básico para mejorar su contenido.
Entrada de ejemplo: [b]Hello[/b]
Salida de ejemplo: <strong>Hello</strong>
Opciones:
Las etiquetas predeterminadas son: b, i, u, izquierda, derecha, centro, cita, enlace, img, tamaño y color.
Las opciones son la etiqueta BBCode comodín. La clave es la etiqueta BBCode deseada y la opción es el reemplazo de HTML.
Si el patrón se proporciona como una matriz, puede acceder a la opción Etiqueta como [link=http://github.com]my profile[/link]
como <a href="$1">$2</a>
.
[
// New tag called [yellow]text in yellow[/yellow]
' yellow ' => ' <span style="color: yellow;">$1</span> ' ,
// Disable default "b" tag
' b ' => null
]
Clase: AkibatechWysiwygModifierParseVariables
Descripción: Reemplaza un valor preestablecido de variables.
Entrada de ejemplo: Hello %name%!
Salida de ejemplo: Hello John!
Opciones:
Puede especificar el delimitador y las variables aceptadas.
[
// My custom delimiter. Vars are parsed in this delimiter. Default is "%".
' in ' => ' % ' ,
// Accepted vars
' accept ' => [
' name ' => ' Joe ' , // %name% => Joe
' email ' => ' [email protected] ' // %email% => [email protected]
]
]
Clase: AkibatechWysiwygModifierAbsolutePath
Descripción: Reemplazará los atributos "href" y "src" con valores absolutos.
Entrada de ejemplo: <img src="../../files/sea.jpg" />
Salida de ejemplo: <img src="/files/sea.jpg" />
Opciones:
Puede especificar un prefijo personalizado para sus rutas.
[
// Custom prefix. Default is '/'.
' prefix ' => ' http://site.com/ ' , // <img src="http://site.com/files/sea.jpg" />
]
Clase: AkibatechWysiwygModifierWordsFilter
Descripción: Elimina una lista de palabras de un texto. Actuar como un sistema de censura.
Entrada de ejemplo: Cunt!
Salida de ejemplo: [censored]!
Opciones:
La lista y el reemplazo.
[
// Words list as an array.
' words ' => [ ' word1 ' , ' word2 ' ], // No defaults words.
// Replacement
' replace ' => ' [censored] ' // Wanted replacement, default to [censored]
]
Clase: AkibatechWysiwygModifierEmptyParagraphs
Descripción: Elimina párrafos vacíos de tu contenido.
Entrada de ejemplo: <p></p><p>Hello</p><p> </p>
Salida de ejemplo: <p>Hello</p>
Opciones:
Ninguno.
Clase: AkibatechWysiwygModifierMailToLink
Descripción: Transforma direcciones de correo electrónico en etiquetas de enlace en las que se puede hacer clic.
Entrada de ejemplo: [email protected]
Salida de ejemplo: <a href="mailto:[email protected]">[email protected]</a>
Opciones:
[
// Will replace "@" by "<at>", set to false to disable...
' at ' => ' <at> ' ,
]
Clase: AkibatechWysiwygModifierNlToBr
Descripción: Reemplace los saltos de línea en saltos de línea HTML. Similar a la función nativa de PHP nl2br().
Entrada de ejemplo: hello world
Salida de ejemplo: hello<br>world
Opciones:
[
// Linebreak symbol to search. Defaults to "n"
' search ' => "n" ,
// HTML to replace. Defaults to "<br>"
' replace ' => ' <br /> '
]
Clase: AkibatechWysiwygModifierStripTags
Descripción: elimina las etiquetas HTML de la entrada. Similar a la función nativa de PHP strip_tags().
Entrada de ejemplo: <p>hello world</p>
Salida de ejemplo: hello world
Opciones:
[
// Allowed HTML tags (see strip_tags documentation). Defaults, none.
' allow ' => " <a> " ,
]
Clase: AkibatechWysiwygModifierUrlToLink
Descripción: transforma direcciones web en etiquetas de enlace en las que se puede hacer clic.
Entrada de ejemplo: https://www.github.com
Salida de ejemplo: <a href="https://www.github.com">https://www.github.com</a>
Opciones:
[
// Add a custom class to all generated tags. No defaults.
' class ' => ' link ' ,
// Customize the link target. No defaults.
' target ' => ' _blank '
]
Clase: AkibatechWysiwygModifierYoutubeLinkToIframe
Descripción: Transforma los enlaces de YouTube (largos y cortos) en un reproductor de vídeo integrado (iframe).
Entrada de ejemplo: My new video: https://youtu.be/wBqM2ytqHY4
Salida de ejemplo: My new video: <iframe src="https://www.youtube.com/embed/wBqM2ytqHY4?controls=1&rel=0&showinfo=1" class="youtube-iframe" width="560" height="315" frameborder="0" allowfullscreen></iframe>
Opciones:
[
// Custom class added to the player
' class ' => ' youtube-iframe ' ,
// Custom width (in px) or null
' width ' => 560 ,
// Custom height (in px) or null
' height ' => 315 ,
// Allow fullscreen
' allow_fullscreen ' => true ,
// Enable youtube suggestions when video ends
' with_suggestions ' => false ,
// Display video info
' with_infos ' => true ,
// Display video controls
' with_controls ' => true
]
Puede ampliar fácilmente el preprocesador agregando sus propios modificadores.
Todo lo que necesitas es crear una clase que implemente ModifierInterface . También le recomendamos que extienda AbstractModifier para acceder a métodos comunes (setOptions, getOptions, ...).
Básicamente, un modificador recibe la entrada para transformar a través de un método público handle($input) .
Las opciones son manejadas por un método público defaultOptions() que devuelve una serie de opciones disponibles. Y en el cuerpo de su modificador, puede acceder a estas opciones con las opciones de atributo de instancia.
También tienes la posibilidad de agregar un modificador dinámico.
El método "addModifier" también acepta una función de devolución de llamada.
Ejemplo :
$ processor -> addModifier ( function ( $ input ) {
return str_rot13 ( ' hello ' ); // Will return "uryyb"
});
WYSIWYG Preprocessor se prueba con PHPUnit.
Asegúrese de tener instaladas las dependencias de desarrollo de Composer y escriba:
vendor/bin/phpunit
Autor: Marceau Casals y todos los colaboradores
Licencia: MIT