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, влево, вправо, центр, цитата, ссылка, изображение, размер и цвет.
Опции — это тег 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.
Убедитесь, что у вас установлены зависимости от разработчиков композитора, и введите:
vendor/bin/phpunit
Автор: Марсо Казальс и все участники
Лицензия: Массачусетский технологический институт