我使用php根据网络中设备的可用性返回SVG图像.

生成的SVG最初包括一个背景色和三行文本.如果我在html页面中使用图像,或者直接在浏览器中打开它,这一切都很好用.

然后我想添加一个基于设备类型的小象形图(也是SVG).

如果我直接调用SVG,则第二个SVG显示 如果我在html中使用svg,第二个svg将不会显示(没有错误图标--什么都没有)--只有文本和背景工作 如果我输入的类型不存在第二个SVG文件,浏览器将显示包含在SVG中的错误图标,如果从html调用,错误图标也会丢失.

我错过了什么/搞砸了什么?提前谢谢!

这是php的相关部分.

<?php

header('Content-Type: image/svg+xml');

$sName = $_GET['name'];
$sIP = $_GET['ip'];
$sCheckFor = $_GET['suche'];
$sType = $_GET['typ'];

#[...] curl and such things

echo '<?xml version="1.0" encoding="utf-8"?>
    <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="100">
    <rect x="0" y="0" width="200" height="100" style="fill: ' . htmlspecialchars( $color, ENT_QUOTES ) . '"/>
    <text fill="' . $sTextColor . '" font-size="24" x="50%" y="25" dominant-baseline="middle" text-anchor="middle">' . str_replace("_", " ", $sName) . ' </text>
    <text fill="' . $sTextColor . '" font-size="12" x="50%" y="52" dominant-baseline="middle" text-anchor="middle">' . $sIP  . ' </text>
    <text fill="' . $sTextColor . '" font-size="18" x="50%" y="75" dominant-baseline="middle" text-anchor="middle">' . $response  . ' </text>';
    echo '<image x="10%" y="32%" width="50px" height="50px" href="./icons/' . $sType . '.svg" />';
    echo '</svg>';

这就是html文件:

<img src="./checkDevice.php?name=AmbiLamp&suche=AmbiLamp&ip=192.168.88.88&typ=lmp">

推荐答案

在相互嵌套SVG时,这是一个常见问题.

您遇到的问题是由包含SVG viewBox引起的.SVG有一个框大小,它定义了SVG元素可以显示的区域有多大.

子SVG继承了父SVG的viewBox,这很可能比您需要的更大,导致SVG显示,但超出了预期的区域.

一个简单的解决方案是确保两个SVG具有相同的viewBox大小,但这有时并不总是容易有效地实现.

Php相关问答推荐

如何使用属性#[Embedded]嵌入带有规则的对象集合?

Symfony/Panther Web抓取不适用于登录后的内容(云功能)

在Google云存储对象上从PHP设置缓存控制TTL会更改错误的元数据

Symfony5:如何在不登录的情况下使API路由可访问?

在laravel 9或10 php中向中间件响应添加自定义数据

如何在PHP中组合日期范围

如何在微软图形API中使用用户S访问令牌或基于租户ID的访问令牌?

如果WooCommerce购物车在 checkout 时被清空,请重定向至store 页面

在WooCommerce购物车页面应用优惠券不会';t刷新总计

woocommerce_available_ payment_gateways 过滤器挂钩多次触发

需要以一种形式执行两个操作

我不明白为什么我收到未定义的数组键异常错误 - Laravel 9 PHP 8

用于更新 WooCommerce 管理产品列表中库存数量的自定义输入字段

过滤会员计划标题和标签

在 WordPress 中将自定义帖子类型永久链接设置为 root

如何通过额外的属性和本地化来使用 laravel 枚举

判断类别是否存在 Shopware 6

如何使用属性创建属性预设?

如何在字符串constant-string-NUMBER-*中获取 NUMBER?

如何在 Laravel 9 中判断异常是否可报告?