为了账号安全,请及时绑定邮箱和手机立即绑定

仅返回没有 html 标签的 php 数据

仅返回没有 html 标签的 php 数据

繁花如伊 2023-09-04 17:05:21
我正在尝试从shields.io创建一个自定义盾牌。我尝试了创建端点的路线,json但由于可访问性问题,这对我不起作用。md我想出了一个解决方法,从我的 php 端调用shields.io 链接,然后将其返回到一个端点,然后反过来从我的标签中的自述文件中调用该端点<img>。如果我在浏览器中输入网址,它会正常工作并且我会看到盾牌。如果我尝试在自述文件的标签中使用该网址,<img>它将不起作用。我意识到这是因为我<html>从 php.ini 返回了额外的元素。这是我的代码:php:$router->get('/badge', function (AssetsManifestGateway $assetsManifestGateway) {  $appVersion = $assetsManifestGateway->getAppVersion();  $shield = file_get_contents("https://img.shields.io/static/v1?label=". config('app.partner_code'). "_". config('app.env'). "&message=". $appVersion);  return $shield; });自述文件:<img src="http://<my url>/badge">在我的浏览器中访问 url 时的响应:<html> <head> </head> <body>  <svg xmlns="http://www.w3.org/2000/svg">   <extra content>  </svg> </body></html>所以我基本上只想返回<svg>该响应的一部分。这可能吗?
查看完整描述

1 回答

?
慕仙森

TA贡献1827条经验 获得超7个赞

你的问题

通过从shields.io()获取徽章file_get_contents并返回svg徽章,您实际上使服务器相信您返回的是html(请参阅标签<svg></svg>)。

我尝试了创建端点的路线,json但由于可访问性问题,这对我不起作用。

不久前我也遇到过类似的问题。我通过使用 php 创建一个shields端点解决了这个问题。

这样,您可以使用 php 创建 JSON,并让shields 服务器从中创建徽章 - 而不是从shields.io 获取和返回徽章(您所做的)。

代码回答你的问题

我总是使用这个函数来创建我的徽章,因为抽象在这里似乎非常有用:

function createBadgeJson($label, $message, $color="green") {

  return "{

\"schemaVersion\": 1,

\"label\": \"$label\",

\"message\": \"$message\",

\"color\": \"$color\"

}";

}

要创建您在上面尝试创建的徽章,请将其放入您的 php 文件中:


$appVersion = $assetsManifestGateway->getAppVersion();


echo createBadgeJson(config('app.partner_code'), $appVersion);

您可以在 Markdown 中使用徽章,如下所示:


![your badge](https://img.shields.io/endpoint?url=https://your-endpoint-domain.com/your-badge-path)

或者在 HTML 中使用上面的链接格式作为图像源。


查看完整回答
反对 回复 2023-09-04
  • 1 回答
  • 0 关注
  • 90 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信