Heim  >  Artikel  >  Backend-Entwicklung  >  So lösen Sie das Problem, dass die SVG-Vorlage in PHP nicht angezeigt wird

So lösen Sie das Problem, dass die SVG-Vorlage in PHP nicht angezeigt wird

PHPz
PHPzOriginal
2023-04-19 10:07:45589Durchsuche

In der Webentwicklung müssen wir häufig Bilder verwenden, und SVG (Scalable Vector Graphics) ist ein sehr nützliches Format, das ohne Verzerrung adaptiv skaliert werden kann und daher von Entwicklern zunehmend bevorzugt wird. Es gibt auch viele Bibliotheken in PHP, die die Verwendung von SVG-Bildern unterstützen, allerdings stößt man manchmal auf das Problem, dass SVG-Bilder nicht richtig angezeigt werden können. In diesem Artikel wird eine der Situationen vorgestellt: Bei Verwendung der Template-Engine zum Laden von SVG-Bildern in PHP tritt das Problem auf, dass die SVG-Bilder nicht angezeigt werden können, und es wird eine Lösung bereitgestellt.

Problembeschreibung

Verwendung der Template-Engine in PHP zum Laden von SVG-Bildern, diese können jedoch nicht normal auf der Seite angezeigt werden und es wird nur ein leerer Bereich angezeigt.

Ursache des Problems

Die Dateistruktur des SVG-Bildes unterscheidet sich von der normalen HTML-Dateistruktur, die spezielle Attribute wie XML-Deklaration und Namespace enthält. Diese Attribute werden von der Template-Engine als Tags erkannt, was zu Problemen beim Rendern führt und dazu führt, dass das SVG-Bild nicht richtig angezeigt wird.

Lösung

Option 1: Deaktivieren Sie das Parsen von SVG-Bildern durch die Template-Engine

Sie können das Parsen von SVG-Bildern deaktivieren, indem Sie es in der Konfigurationsdatei der Template-Engine festlegen und so das Problem vermeiden, dass SVG nicht angezeigt wird aufgrund von Analysefehlern ordnungsgemäß ausgeführt.

Am Beispiel von Smarty können Sie die folgende Konfiguration in der Konfigurationsdatei hinzufügen:

// 关闭对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'));

Lösung 2: SVG-Tags maskieren

Das Hinzufügen des Escape-Zeichens „“ vor dem SVG-Tag kann verhindern, dass die Template-Engine es analysiert als HTML-Tag, um das Problem zu vermeiden, dass SVG-Bilder nicht richtig angezeigt werden.

Konvertieren Sie beispielsweise den folgenden Code:

<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>

in den folgenden Code:

\<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>

Auf diese Weise erkennt die Template-Engine die SVG-Tags nicht als HTML-Tags und rendert das SVG-Bild korrekt.

Zusammenfassung

Bei der Verwendung von SVG-Bildern in PHP kann es insbesondere bei der Verwendung von Template-Engines zu Problemen kommen, die nicht richtig dargestellt werden können. In diesem Artikel werden zwei Lösungen beschrieben: Deaktivieren der Analyse von SVG-Bildern durch die Template-Engine und Escapen von SVG-Tags. Wenn wir auf dieses Problem stoßen, können wir je nach Situation die entsprechende Lösung auswählen.

Das obige ist der detaillierte Inhalt vonSo lösen Sie das Problem, dass die SVG-Vorlage in PHP nicht angezeigt wird. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn