WYSIWYG Preprocessor是一个没有依赖项的 PHP 库。它是一种用于处理 HTML 文本区域的工具箱。
源由 Composer 管理。
composer require akibatech/wysiwygpreprocessor " 0.* "
对于给定的文本区域,
$ textarea = " Check my website http://website.com. Keep in touch at [email protected] ! " ;
我们想要将链接和电子邮件地址转换为 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 ();
结果:
Check my website < a href =" http://website.com " > http://website.com </ a > . Keep in touch at < a href =" mailto:[email protected] " > [email protected] </ a > !
修改器很容易定制。
想象一下,您想要将所有链接定位到新页面或向其添加自定义类。
$ 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 ();
结果:
Check out my new site: < a href =" personnal-website.com " class =" custom-link " target =" _blank " > personnal-website.com </ a >
类: AkibatechWysiwygModifierBbCode
描述:应用基本 BBCode 来增强您的内容。
输入示例: [b]Hello[/b]
示例输出: <strong>Hello</strong>
选项:
默认标签为:b、i、u、left、right、center、quote、link、img、size 和 color。
选项是通配符 BBCode 标记。键是所需的 BBCode 标签,选项是 HTML 替换。
如果模式以数组形式给出,它可以访问标签选项,例如[link=http://github.com]my profile[/link]
作为<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
]
类: AkibatechWysiwygModifierParseVariables
描述:替换预设的变量。
输入示例: Hello %name%!
输出示例: Hello John!
选项:
您可以指定分隔符和接受的变量。
[
// 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]
]
]
类: AkibatechWysiwygModifierAbsolutePath
描述:将用绝对值替换“href”和“src”属性。
输入示例: <img src="../../files/sea.jpg" />
示例输出: <img src="/files/sea.jpg" />
选项:
您可以为路径指定自定义前缀。
[
// Custom prefix. Default is '/'.
' prefix ' => ' http://site.com/ ' , // <img src="http://site.com/files/sea.jpg" />
]
类: AkibatechWysiwygModifierWordsFilter
描述:从文本中删除单词列表。充当审查制度。
输入示例: Cunt!
示例输出: [censored]!
选项:
列表和替换。
[
// Words list as an array.
' words ' => [ ' word1 ' , ' word2 ' ], // No defaults words.
// Replacement
' replace ' => ' [censored] ' // Wanted replacement, default to [censored]
]
类: AkibatechWysiwygModifierEmptyParagraphs
描述:从内容中删除空段落。
输入示例: <p></p><p>Hello</p><p> </p>
示例输出: <p>Hello</p>
选项:
没有任何。
类: AkibatechWysiwygModifierMailToLink
描述:转换可点击链接标签中的电子邮件地址。
输入示例: [email protected]
示例输出: <a href="mailto:[email protected]">[email protected]</a>
选项:
[
// Will replace "@" by "<at>", set to false to disable...
' at ' => ' <at> ' ,
]
类: AkibatechWysiwygModifierNlToBr
描述:将换行符替换为 HTML 换行符。类似于 php 原生函数 nl2br()。
输入示例: hello world
输出示例: hello<br>world
选项:
[
// Linebreak symbol to search. Defaults to "n"
' search ' => "n" ,
// HTML to replace. Defaults to "<br>"
' replace ' => ' <br /> '
]
类: AkibatechWysiwygModifierStripTags
描述:从输入中删除 HTML 标签。类似于 php 原生函数 strip_tags()。
输入示例: <p>hello world</p>
示例输出: hello world
选项:
[
// Allowed HTML tags (see strip_tags documentation). Defaults, none.
' allow ' => " <a> " ,
]
类: AkibatechWysiwygModifierUrlToLink
描述:转换可点击链接标签中的网址。
输入示例: https://www.github.com
示例输出: <a href="https://www.github.com">https://www.github.com</a>
选项:
[
// Add a custom class to all generated tags. No defaults.
' class ' => ' link ' ,
// Customize the link target. No defaults.
' target ' => ' _blank '
]
类: AkibatechWysiwygModifierYoutubeLinkToIframe
描述:将 youtube 链接(长链接和短链接)转换为嵌入视频播放器 (iframe)。
输入示例: My new video: https://youtu.be/wBqM2ytqHY4
输出示例: 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>
选项:
[
// 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
]
您可以通过添加自己的修饰符轻松扩展预处理器。
您所需要的只是创建一个实现ModifierInterface 的类。还鼓励您扩展AbstractModifier以访问常用方法(setOptions、getOptions...)。
基本上,修饰符通过公共方法handle($input)接收要转换的输入。
选项由公共方法defaultOptions()处理,返回可用选项的数组。在修改器主体中,您可以使用实例属性options访问这些选项。
您还可以添加动态修饰符。
方法“addModifier”还接受回调函数。
例子 :
$ processor -> addModifier ( function ( $ input ) {
return str_rot13 ( ' hello ' ); // Will return "uryyb"
});
WYSIWYG Preprocessor使用 PHPUnit 进行测试。
确保您安装了 Composer 开发依赖项并输入:
vendor/bin/phpunit
作者:Marceau Casals 和所有贡献者
许可证:麻省理工学院