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、左、右、中央、引用、リンク、画像、サイズ、色です。
オプションは、wildcard BBCode タグです。キーは必要な BBCode タグで、オプションは HTML の置換です。
パターンが配列として与えられた場合、 <a href="$1">$2</a>
として[link=http://github.com]my profile[/link]
のようなタグ オプションにアクセスできます。
[
// 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
説明: クリック可能なリンク タグの Web アドレスを変換します。
入力例: 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 dev の依存関係がインストールされていることを確認し、次のように入力します。
vendor/bin/phpunit
著者: Marceau Casals およびすべての寄稿者
ライセンス: MIT