Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menyelesaikan masalah yang template svg tidak dipaparkan dalam php

Bagaimana untuk menyelesaikan masalah yang template svg tidak dipaparkan dalam php

PHPz
PHPzasal
2023-04-19 10:07:45589semak imbas

Dalam pembangunan web, kita selalunya perlu menggunakan imej, dan SVG (Grafik Vektor Boleh Skala) ialah format yang sangat berguna yang boleh menyesuaikan skala tanpa herotan, jadi ia semakin digemari oleh pembangun. Terdapat juga banyak perpustakaan dalam PHP yang menyokong penggunaan imej SVG, tetapi kadangkala anda menghadapi masalah bahawa imej SVG tidak dapat dipaparkan dengan betul. Artikel ini akan memperkenalkan salah satu situasi - apabila menggunakan enjin templat untuk memuatkan imej SVG dalam PHP, masalah bahawa imej SVG tidak dapat dipaparkan berlaku dan memberikan penyelesaian.

Perihalan Masalah

Menggunakan enjin templat dalam PHP untuk memuatkan imej SVG, tetapi ia tidak boleh dipaparkan seperti biasa pada halaman dan hanya kawasan kosong yang muncul.

Punca masalah

Struktur fail imej SVG adalah berbeza daripada struktur fail HTML biasa, yang termasuk atribut khas seperti pengisytiharan XML dan ruang nama. Atribut ini akan diiktiraf sebagai teg oleh enjin templat, menyebabkan masalah semasa pemaparan, menyebabkan imej SVG tidak dipaparkan dengan betul.

Penyelesaian

Pilihan 1: Matikan penghuraian imej SVG oleh enjin templat

Anda boleh melumpuhkan penghuraian imej SVG dengan menetapkannya dalam fail konfigurasi enjin templat, dengan itu Elakkan masalah SVG tidak dipaparkan dengan betul kerana ralat penghuraian.

Mengambil Smarty sebagai contoh, anda boleh menambah konfigurasi berikut dalam fail konfigurasi:

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

Pilihan 2: Escape teg SVG

Tambahkan aksara melarikan diri di hadapan tag SVG "" boleh menghalang enjin templat daripada menghuraikannya ke dalam teg HTML, dengan itu mengelakkan masalah imej SVG tidak dipaparkan dengan betul.

Sebagai contoh, tukar kod berikut:

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

kepada kod berikut:

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

Dengan cara ini, enjin templat tidak akan mengenali teg SVG sebagai HTML tag, dengan itu memaparkan imej SVG dengan betul.

Ringkasan

Apabila menggunakan imej SVG dalam PHP, mungkin terdapat masalah yang tidak dapat dipaparkan dengan betul, terutamanya apabila menggunakan enjin templat. Artikel ini menerangkan dua penyelesaian: mematikan penghuraian imej SVG enjin templat dan melepaskan teg SVG. Apabila kita menghadapi masalah ini, kita boleh memilih penyelesaian yang sepadan mengikut situasi tertentu.

Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan masalah yang template svg tidak dipaparkan dalam php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn