WYSIWYG Preprocessor é uma biblioteca PHP sem dependências . É uma espécie de caixa de ferramentas para processar suas áreas de texto HTML .
As fontes são gerenciadas com o Composer.
composer require akibatech/wysiwygpreprocessor " 0.* "
Para a área de texto fornecida,
$ textarea = " Check my website http://website.com. Keep in touch at [email protected] ! " ;
Queremos transformar o link e o endereço de e-mail em tags 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 em:
Check my website < a href =" http://website.com " > http://website.com </ a > . Keep in touch at < a href =" mailto:[email protected] " > [email protected] </ a > !
Os modificadores são facilmente personalizáveis.
Imagine que você deseja direcionar todos os links para uma nova página ou adicionar uma classe personalizada a ela.
$ 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 em:
Check out my new site: < a href =" personnal-website.com " class =" custom-link " target =" _blank " > personnal-website.com </ a >
Classe: AkibatechWysiwygModifierBbCode
Descrição: Aplique um BBCode básico para aprimorar seu conteúdo.
Exemplo de entrada: [b]Hello[/b]
Exemplo de saída: <strong>Hello</strong>
Opções:
As tags padrão são: b, i, u, esquerda, direita, centro, citação, link, img, tamanho e cor.
As opções são a tag BBCode wilcard. A chave é a tag BBCode desejada e a opção é a substituição do HTML.
Se o padrão for fornecido como array, ele poderá acessar a opção Tag 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
]
Classe: AkibatechWysiwygModifierParseVariables
Descrição: Substitua uma predefinição de variáveis.
Entrada de exemplo: Hello %name%!
Saída de exemplo: Hello John!
Opções:
Você pode especificar o delimitador e as variáveis aceitas.
[
// 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
Descrição: Substituirá os atributos "href" e "src" por valores absolutos.
Entrada de exemplo: <img src="../../files/sea.jpg" />
Exemplo de saída: <img src="/files/sea.jpg" />
Opções:
Você pode especificar um prefixo personalizado para seus caminhos.
[
// Custom prefix. Default is '/'.
' prefix ' => ' http://site.com/ ' , // <img src="http://site.com/files/sea.jpg" />
]
Classe: AkibatechWysiwygModifierWordsFilter
Descrição: Remove uma lista de palavras de um texto. Atuar como um sistema de censura.
Entrada de exemplo: Cunt!
Exemplo de saída: [censored]!
Opções:
A lista e a substituição.
[
// Words list as an array.
' words ' => [ ' word1 ' , ' word2 ' ], // No defaults words.
// Replacement
' replace ' => ' [censored] ' // Wanted replacement, default to [censored]
]
Classe: AkibatechWysiwygModifierEmptyParagraphs
Descrição: Exclua parágrafos vazios do seu conteúdo.
Exemplo de entrada: <p></p><p>Hello</p><p> </p>
Exemplo de saída: <p>Hello</p>
Opções:
Nenhum.
Classe: AkibatechWysiwygModifierMailToLink
Descrição: Transforma endereços de e-mail em tag de link clicável.
Entrada de exemplo: [email protected]
Exemplo de saída: <a href="mailto:[email protected]">[email protected]</a>
Opções:
[
// Will replace "@" by "<at>", set to false to disable...
' at ' => ' <at> ' ,
]
Classe: AkibatechWysiwygModifierNlToBr
Descrição: Substitua as quebras de linha por quebras de linha HTML. Semelhante à função nativa do PHP nl2br().
Entrada de exemplo: hello world
Resultado de exemplo: hello<br>world
Opções:
[
// Linebreak symbol to search. Defaults to "n"
' search ' => "n" ,
// HTML to replace. Defaults to "<br>"
' replace ' => ' <br /> '
]
Classe: AkibatechWysiwygModifierStripTags
Descrição: Remova tags HTML da entrada. Semelhante à função nativa do php strip_tags().
Entrada de exemplo: <p>hello world</p>
Saída de exemplo: hello world
Opções:
[
// Allowed HTML tags (see strip_tags documentation). Defaults, none.
' allow ' => " <a> " ,
]
Classe: AkibatechWysiwygModifierUrlToLink
Descrição: Transforma endereços web em tag de link clicável.
Entrada de exemplo: https://www.github.com
Exemplo de saída: <a href="https://www.github.com">https://www.github.com</a>
Opções:
[
// Add a custom class to all generated tags. No defaults.
' class ' => ' link ' ,
// Customize the link target. No defaults.
' target ' => ' _blank '
]
Classe: AkibatechWysiwygModifierYoutubeLinkToIframe
Descrição: Transforma links do YouTube (longos e curtos) em um player de vídeo incorporado (iframe).
Entrada de exemplo: My new video: https://youtu.be/wBqM2ytqHY4
Exemplo de saída: 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>
Opções:
[
// 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
]
Você pode estender facilmente o pré-processador adicionando seus próprios modificadores.
Tudo que você precisa é criar uma classe implementando ModifierInterface . Você também é incentivado a estender AbstractModifier para acessar métodos comuns (setOptions, getOptions, ...).
Basicamente, um modificador recebe a entrada para transformar através de um método público handle($input) .
As opções são tratadas por um método público defaultOptions() que retorna uma matriz de opções disponíveis. E no corpo do seu modificador, você pode acessar essas opções com o atributo de instância options .
Você também tem a possibilidade de adicionar um modificador dinâmico.
O método "addModifier" também aceita uma função de retorno de chamada.
Exemplo :
$ processor -> addModifier ( function ( $ input ) {
return str_rot13 ( ' hello ' ); // Will return "uryyb"
});
WYSIWYG Preprocessor é testado com PHPUnit.
Certifique-se de ter as dependências do compositor dev instaladas e digite:
vendor/bin/phpunit
Autor: Marceau Casals e todos os colaboradores
Licença: MIT