Maison  >  Article  >  développement back-end  >  Comment résoudre le problème du modèle svg qui ne s'affiche pas en php

Comment résoudre le problème du modèle svg qui ne s'affiche pas en php

PHPz
PHPzoriginal
2023-04-19 10:07:45589parcourir

Dans le développement Web, nous avons souvent besoin d'utiliser des images, et SVG (Scalable Vector Graphics) est un format très utile qui peut évoluer de manière adaptative sans distorsion, il est donc de plus en plus favorisé par les développeurs. Il existe également de nombreuses bibliothèques en PHP qui prennent en charge l'utilisation d'images SVG, mais vous rencontrez parfois le problème que les images SVG ne peuvent pas être affichées correctement. Cet article présentera l'une des situations : lors de l'utilisation du moteur de modèles pour charger des images SVG en PHP, le problème selon lequel les images SVG ne peuvent pas être affichées se produit et fournira une solution.

Description du problème

Utilisation du moteur de modèles en PHP pour charger des images SVG, mais elles ne peuvent pas être affichées normalement sur la page et seule une zone vide apparaît.

Cause du problème

La structure du fichier de l'image SVG est différente de la structure du fichier HTML ordinaire, qui contient des attributs spéciaux tels que la déclaration XML et l'espace de noms. Ces attributs seront reconnus comme des balises par le moteur de modèle, provoquant des problèmes lors du rendu, empêchant l'image SVG de s'afficher correctement.

Solution

Option 1 : Désactivez l'analyse des images SVG par le moteur de modèle

Vous pouvez désactiver l'analyse des images SVG en la définissant dans le fichier de configuration du moteur de modèle, évitant ainsi le problème de non-affichage du SVG correctement en raison d'erreurs d'analyse.

En prenant Smarty comme exemple, vous pouvez ajouter la configuration suivante dans le fichier de configuration :

// 关闭对SVG图像的解析
$smarty->security_settings['allowed_tags'] = array_diff($smarty->security_settings['allowed_tags'], array('svg'));
$smarty->security_settings['allowed_modifiers'] = array_diff($smarty->security_settings['allowed_modifiers'], array('svg'));

Solution 2 : Échapper aux balises SVG

L'ajout du caractère d'échappement "" devant la balise SVG peut empêcher le moteur de modèle de l'analyser en tant que balise HTML, évitez ainsi le problème des images SVG qui ne s'affichent pas correctement.

Par exemple, convertissez le code suivant :

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
  <path d="M256 22.4C131.4 22.4 27.2 126.6 27.2 251.2S131.4 480 256 480s228.8-104.2 228.8-228.8S380.6 22.4 256 22.4zM256 406.2c-87.9 0-159.8-71.8-159.8-159.8s71.8-159.8 159.8-159.8 159.8 71.8 159.8 159.8S343.9 406.2 256 406.2z"/>
</svg>

en code suivant :

\<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
  \<path d="M256 22.4C131.4 22.4 27.2 126.6 27.2 251.2S131.4 480 256 480s228.8-104.2 228.8-228.8S380.6 22.4 256 22.4zM256 406.2c-87.9 0-159.8-71.8-159.8-159.8s71.8-159.8 159.8-159.8 159.8 71.8 159.8 159.8S343.9 406.2 256 406.2z"/>
\</svg>

De cette façon, le moteur de modèle ne reconnaîtra pas les balises SVG comme des balises HTML et restituera correctement l'image SVG.

Résumé

Lors de l'utilisation d'images SVG en PHP, il peut y avoir des problèmes qui ne peuvent pas être affichés correctement, en particulier lors de l'utilisation de moteurs de modèles. Cet article décrit deux solutions : désactiver l'analyse des images SVG par le moteur de modèles et échapper aux balises SVG. Lorsque nous rencontrons ce problème, nous pouvons choisir la solution correspondante en fonction de la situation spécifique.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn