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 和所有貢獻者
許可證:麻省理工學院