gpt4 book ai didi

PHP - 高效显示内联 SVG 图像

转载 作者:行者123 更新时间:2023-11-28 00:58:11 27 4
gpt4 key购买 nike

我需要在我的页面中显示 svg 图像。由于 svg 图像将使用 css 设置样式(填充、描边等属性),因此 svg 必须是内联的。现在我还需要动态设置这些 svg 文件的类属性 ( <svg class="someClass">...</svg> . )。

现在,我的问题是页面可以动态加载任意数量的 svg 图像。并且类名都将从数组中加载。由于 svg 是内联的,因此不可能使用循环来填充类名。

于是想到用json来处理。

{
"icon-name-1" : {
"viewbox" : "0 0 100 100",
"svgContent" : "..."
},

"icon-name-2" : {
"viewbox" : "0 0 100 100",
"svgContent" : "..."
},

...
}

然后在 PHP 中,我将文件加载到 json_object 并使用一个函数来加载图标,最后循环数组,现在还有图标名称,以回显 svg。

    $iconObj = json_decode(file_get_contents("icons.json"));

function load_SVG ($iconObj, $iconName, $svgClassName) {
$viewbox = $iconObj->viewbox;

$svg = "<svg class='$svgClassName' viewBox='$viewbox'>";
$svg .= $iconObj->$iconName->svgContent;
$svg .= "</svg>";

return $svg;
}

// array is generated dynamically too
$arr = [
["class-name-1", "icon-name-1"],
["class-name-2", "icon-name-2"],
...
];

foreach ($arr as $item) {
load_SVG($iconObj, $item[0], $item[1]);
}

我感觉这里的事情过于复杂了。所以我想知道是否有更好的方法或其他方法来实现同样的目标?但我喜欢的一件事是我不必在代码中看到任何内联 svg,这肯定会是一场噩梦:)

最佳答案

的确,这是一个过于复杂的案例。我所要做的就是在 svg 代码中使用像 class={{class-name}} 这样的占位符,然后使用加载 svg 文件并使用简单的字符串替换来实现相同的目的。

$svg = file_get_contents($svgPath);
$svg = str_replace("{{class-name}}", $array[$index], $svg);

JSON 完全没有意义。经验教训。

关于PHP - 高效显示内联 SVG 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43680346/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com