Jadi saya baru saja menguji konfigurasi HTML Purifier default yang sekarang memungkinkan penyematan video youtube dengan benar dan tidak menghapusnya saat menyimpan entri, namun masih tidak berfungsi dengan benar. Saya yakin ini karena regex yang digunakan untuk menentukan apakah iframe src URL youtube atau vimeo kurang tepat dan tidak memperhitungkan kasus tepi di url youtube yang menghilangkan bagian https:
di awal URL-nya.
Hal ini terjadi karena saat pertama kali menyematkan video youtube, HTML yang dihasilkan terlihat seperti ini:
<figure><iframe style="width: 500px; height: 281px;" src="//www.youtube.com/embed/roY6H75d9wE" frameborder="0" allowfullscreen=""></iframe></figure>
Seperti yang Anda lihat di atas, parameter src
dimulai dengan //
, bukan https://
Akibatnya, nilai src
atas dihapus karena regex saat ini yang digunakan tidak memperhitungkan kemungkinan skema yang hilang:
https://github.com/craftcms/redactor/blob/2fff5171f89538e84921119e8af533e6379ad24b/src/Field.php#L1019
Berikut adalah regex yang saya gunakan di masa lalu yang berfungsi dengan case Edge ini:
'URI.SafeIframeRegexp' => '%^(https?:)?//(www\.youtube(?:-nocookie)?\.com/embed/|player\.vimeo\.com/video/)%',
Harap perhatikan tanda kurung dan tanda tanya tambahan di sekitar bagian https?:
menandainya sebagai opsional. Itu juga memperhitungkan URL nocookie youtube. Terakhir, karakter .
(titik) juga telah diloloskan karena kami ingin agar cocok dengan titik yang sebenarnya dan bukan sembarang karakter.
Juga, saya pikir karakter .
(titik) dalam regex perlu diloloskan dengan benar karena tujuannya adalah untuk mencocokkan karakter .
literal dan bukan karakter apa pun. Saya telah memperbarui solusi regex di atas untuk menghindarinya.
@andris-sevcenko hanya memeriksa untuk melihat apakah Anda telah melihat masalah ini. Terima kasih.
@sidm1983 saya punya. Apakah Anda bersedia menyerahkan PR untuk ini?
Baru saja merilis 2.8.3 yang memperbaiki ini.
Baru saja memperbarui konfigurasi HTML Purifier default untuk proyek Craft baru juga. Anda perlu melakukan perubahan ini secara manual jika Anda memiliki file config/htmlpurifier/Default.json
: https://github.com/craftcms/craft/commit/2e3710956cd6d8f8a1ac572a2b10c53e714f1799
Terima kasih untuk itu @andris-sevcenko & @brandonkelly. Maaf saya tidak mengirimkan PR untuk ini, karena saya tidak mendapatkan kesempatan pada saat itu. Terima kasih telah menyortirnya.
@brandonkelly , pertanyaan singkat tentang perubahan yang Anda buat pada komit di atas. Sepertinya karakter titik tidak diloloskan, yang berarti mereka akan cocok dengan karakter apa pun dan bukan hanya satu titik. Apakah ini disengaja?
@brandonkelly hanya ingin memeriksa apakah Anda telah melihat komentar saya di atas tentang keluar dari karakter titik di regex. Terima kasih. 😊🙏🏽