WYSIWYG Preprocessor est une bibliothèque PHP sans dépendances . C'est une sorte de boîte à outils pour traiter vos zones de texte HTML .
Les sources sont gérées avec Composer.
composer require akibatech/wysiwygpreprocessor " 0.* "
Pour la zone de texte donnée,
$ textarea = " Check my website http://website.com. Keep in touch at [email protected] ! " ;
Nous souhaitons transformer le lien et l'adresse email en balises 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 ();
Résultats 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 > !
Les modificateurs sont facilement personnalisables.
Imaginez que vous souhaitiez cibler tous les liens vers une nouvelle page ou y ajouter une classe personnalisée.
$ 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 ();
Résultats en :
Check out my new site: < a href =" personnal-website.com " class =" custom-link " target =" _blank " > personnal-website.com </ a >
Classe : AkibatechWysiwygModifierBbCode
Description : Appliquez un BBCode de base pour améliorer votre contenu.
Exemple d'entrée : [b]Hello[/b]
Exemple de résultat : <strong>Hello</strong>
Possibilités :
Les balises par défaut sont : b, i, u, left, right, center, quote, link, img, size et color.
Les options sont des balises wilcard BBCode. La clé est la balise BBCode recherchée et l'option est le remplacement HTML.
Si le modèle est donné sous forme de tableau, il peut accéder à l'option Tag comme [link=http://github.com]my profile[/link]
en tant que <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
]
Classe : AkibatechWysiwygModifierParseVariables
Description : remplace un préréglage de variables.
Exemple d'entrée : Hello %name%!
Exemple de résultat : Hello John!
Possibilités :
Vous pouvez spécifier le délimiteur et les variables acceptées.
[
// 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]
]
]
Classe : AkibatechWysiwygModifierAbsolutePath
Description : Remplacera les attributs "href" et "src" par des valeurs absolues.
Exemple d'entrée : <img src="../../files/sea.jpg" />
Exemple de résultat : <img src="/files/sea.jpg" />
Possibilités :
Vous pouvez spécifier un préfixe personnalisé pour vos chemins.
[
// Custom prefix. Default is '/'.
' prefix ' => ' http://site.com/ ' , // <img src="http://site.com/files/sea.jpg" />
]
Classe : AkibatechWysiwygModifierWordsFilter
Description : Supprimez une liste de mots d'un texte. Agir comme un système de censure.
Exemple d'entrée : Cunt!
Exemple de résultat : [censored]!
Possibilités :
La liste et le remplacement.
[
// Words list as an array.
' words ' => [ ' word1 ' , ' word2 ' ], // No defaults words.
// Replacement
' replace ' => ' [censored] ' // Wanted replacement, default to [censored]
]
Classe : AkibatechWysiwygModifierEmptyParagraphs
Description : Supprimez les paragraphes vides de votre contenu.
Exemple de saisie : <p></p><p>Hello</p><p> </p>
Exemple de résultat : <p>Hello</p>
Possibilités :
Aucun.
Classe : AkibatechWysiwygModifierMailToLink
Description : Transforme les adresses emails en balise de lien cliquable.
Exemple de saisie : [email protected]
Exemple de résultat : <a href="mailto:[email protected]">[email protected]</a>
Possibilités :
[
// Will replace "@" by "<at>", set to false to disable...
' at ' => ' <at> ' ,
]
Classe : AkibatechWysiwygModifierNlToBr
Description : Remplacez les sauts de ligne par des sauts de ligne HTML. Similaire à la fonction native php nl2br().
Exemple de saisie : hello world
Exemple de résultat : hello<br>world
Possibilités :
[
// Linebreak symbol to search. Defaults to "n"
' search ' => "n" ,
// HTML to replace. Defaults to "<br>"
' replace ' => ' <br /> '
]
Classe : AkibatechWysiwygModifierStripTags
Description : Supprimez les balises HTML de l'entrée. Similaire à la fonction native php strip_tags().
Exemple de saisie : <p>hello world</p>
Exemple de résultat : hello world
Possibilités :
[
// Allowed HTML tags (see strip_tags documentation). Defaults, none.
' allow ' => " <a> " ,
]
Classe : AkibatechWysiwygModifierUrlToLink
Description : Transforme les adresses web en balise de lien cliquable.
Exemple de saisie : https://www.github.com
Exemple de résultat : <a href="https://www.github.com">https://www.github.com</a>
Possibilités :
[
// Add a custom class to all generated tags. No defaults.
' class ' => ' link ' ,
// Customize the link target. No defaults.
' target ' => ' _blank '
]
Classe : AkibatechWysiwygModifierYoutubeLinkToIframe
Description : Transforme les liens YouTube (longs et courts) en un lecteur vidéo intégré (iframe).
Exemple de saisie : My new video: https://youtu.be/wBqM2ytqHY4
Exemple de résultat : 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>
Possibilités :
[
// 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
]
Vous pouvez facilement étendre le préprocesseur en ajoutant vos propres modificateurs.
Tout ce dont vous avez besoin est de créer une classe implémentant ModifierInterface . Vous êtes également encouragé à étendre AbstractModifier pour accéder aux méthodes courantes (setOptions, getOptions, ...).
Fondamentalement, un modificateur reçoit l'entrée à transformer via une méthode publique handle($input) .
Les options sont gérées par une méthode publique defaultOptions() renvoyant un tableau d'options disponibles. Et dans le corps de votre modificateur, vous pouvez accéder à ces options avec les options d'attribut d'instance.
Vous avez également la possibilité d'ajouter un modificateur dynamique.
La méthode "addModifier" accepte également une fonction de rappel.
Exemple :
$ processor -> addModifier ( function ( $ input ) {
return str_rot13 ( ' hello ' ); // Will return "uryyb"
});
WYSIWYG Preprocessor est testé avec PHPUnit.
Assurez-vous que les dépendances de développement du compositeur sont installées et tapez :
vendor/bin/phpunit
Auteur : Marceau Casals et tous les contributeurs
Licence : MIT