WYSIWYG Preprocessor เป็น ไลบรารี PHP ที่ไม่มีการพึ่งพา เป็น กล่องเครื่องมือสำหรับประมวลผล textareas 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, ซ้าย, ขวา, กึ่งกลาง, เครื่องหมายคำพูด, ลิงก์, img, ขนาดและสี
ตัวเลือกคือแท็ก BBCode wildcard คีย์คือแท็ก 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, ...)
โดยพื้นฐานแล้ว ตัวดัดแปลงจะได้รับอินพุตเพื่อแปลงผ่าน public method handle($input)
ตัวเลือกได้รับการจัดการโดยวิธีการสาธารณะ defaultOptions() ส่งคืนอาร์เรย์ของตัวเลือกที่มีอยู่ และในส่วนตัวแก้ไขของคุณ คุณสามารถเข้าถึงตัวเลือกเหล่านี้ได้ด้วย ตัวเลือก แอตทริบิวต์อินสแตนซ์
คุณยังมีความเป็นไปได้ที่จะเพิ่มตัวดัดแปลงแบบไดนามิก
เมธอด "addModifier" ยังยอมรับฟังก์ชันโทรกลับด้วย
ตัวอย่าง :
$ processor -> addModifier ( function ( $ input ) {
return str_rot13 ( ' hello ' ); // Will return "uryyb"
});
WYSIWYG Preprocessor ได้รับการทดสอบด้วย PHPUnit
ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้งการพึ่งพาผู้พัฒนาผู้แต่งแล้วและพิมพ์:
vendor/bin/phpunit
ผู้แต่ง: Marceau Casals และผู้มีส่วนร่วมทั้งหมด
ใบอนุญาต: MIT