Je testais donc simplement la configuration par défaut de HTML Purifier qui permet désormais d'intégrer correctement des vidéos youtube et ne la supprime pas lors de l'enregistrement d'une entrée, mais elle ne fonctionne toujours pas correctement. Je pense que c'est parce que l'expression régulière utilisée pour déterminer si l'URL src iframe est youtube ou vimeo n'est pas tout à fait correcte et ne tient pas compte d'un cas limite dans les URL youtube qui omettent la partie https:
au début de l'URL.
Cela se produit parce que lorsque vous intégrez la vidéo YouTube pour la première fois, le code HTML résultant ressemble à ceci :
<figure><iframe style="width: 500px; height: 281px;" src="//www.youtube.com/embed/roY6H75d9wE" frameborder="0" allowfullscreen=""></iframe></figure>
Comme vous pouvez le voir ci-dessus, le paramètre src
commence par //
, au lieu de https://
En conséquence, la src
ci-dessus est supprimée car l'expression régulière actuellement utilisée ne tient pas compte de la possibilité d'un schéma manquant :
https://github.com/craftcms/redactor/blob/2fff5171f89538e84921119e8af533e6379ad24b/src/Field.php#L1019
Voici un regex que j'ai utilisé dans le passé qui fonctionne avec ce cas de bord :
'URI.SafeIframeRegexp' => '%^(https?:)?//(www\.youtube(?:-nocookie)?\.com/embed/|player\.vimeo\.com/video/)%',
Veuillez noter les crochets supplémentaires et le point d'interrogation autour de la partie https?:
marquant comme facultative. Il prend également en compte les URL nocookie de youtube. Enfin, les caractères .
(point) ont également été échappés car nous voulons qu'ils correspondent à un point réel et pas à n'importe quel caractère.
De plus, je pense que ces caractères .
(point) dans l'expression régulière doivent être correctement échappés car l'intention est de faire correspondre un caractère littéral .
et non n'importe quel caractère. J'ai mis à jour la solution regex ci-dessus pour les échapper.
@andris-sevcenko vient de vérifier si vous avez vu ce problème. Merci.
@sidm1983 J'ai. Êtes-vous prêt à soumettre un PR pour cela ?
Je viens de publier la version 2.8.3 qui corrige cela.
Je viens de mettre à jour la configuration par défaut du purificateur HTML pour les nouveaux projets Craft. Vous devrez effectuer cette modification manuellement si vous avez un fichier config/htmlpurifier/Default.json
: https://github.com/craftcms/craft/commit/2e3710956cd6d8f8a1ac572a2b10c53e714f1799
Merci pour ça @andris-sevcenko & @brandonkelly. Mes excuses, je n'ai pas soumis de RP pour cela, car je n'en ai pas eu l'occasion à l'époque. Merci d'avoir réglé ça quand même.
@brandonkelly , petite question sur le changement que vous avez effectué dans le commit ci-dessus. Il semble que les caractères de point ne soient pas échappés, ce qui signifie qu'ils correspondront à n'importe quel caractère et pas à un seul point. Est-ce intentionnel ?
@brandonkelly voulait juste vérifier si vous avez vu mon commentaire ci-dessus sur l'échappement du caractère point dans la regex. Merci. ??