Php 如何正确格式化此字符串以在URL中使用

Php 如何正确格式化此字符串以在URL中使用,php,url-encoding,Php,Url Encoding,我正在尝试创建一个我正在使用的图表的图像,以便将其嵌入到pdf中。我正在使用chart.js创建图表-尽管我正在使用将图表信息传递到quickchart url来创建图表 然后我尝试使用tcpdf将其添加到pdf中 我从一些数组中创建的字符串是: $genderGraph = "https://quickchart.io/chart?c={type: 'doughnut',data:{labels:" . json_encode($genderchartjs['label']) . ", dat

我正在尝试创建一个我正在使用的图表的图像,以便将其嵌入到pdf中。我正在使用
chart.js
创建图表-尽管我正在使用将图表信息传递到
quickchart url
来创建图表

然后我尝试使用
tcpdf
将其添加到pdf中

我从一些数组中创建的字符串是:

$genderGraph = "https://quickchart.io/chart?c={type: 'doughnut',data:{labels:" . json_encode($genderchartjs['label']) . ", datasets: [{data:" . json_encode($genderchartjs['data']) . ",backgroundColor:" . json_encode($chartcolors) . "}]}}";
如果我回显
$genderGraph
在其上面的内容:

https://quickchart.io/chart?c={type: 'doughnut',data:{labels:["Male","Female","Unknown"], datasets: [{data:[16,34,17],backgroundColor:["rgba(255, 99, 132, 1)","rgba(54, 162, 235, 1)","rgba(255, 206, 86, 1)","rgba(75, 192, 192, 1)","rgba(153, 102, 255, 1)","rgba(255, 159, 64, 1)","rgba(0, 0, 0, 1)"]}]}}
如果你坚持在浏览器的地址栏将显示正确的图表图像,正是我想要的

问题是当我尝试使用
file\u get\u contents()

我得到以下警告:

警告(2):文件获取内容({类型:'甜甜圈',数据:{标签:[“男性”,“女性”,“未知”],数据集:[{数据:[16,34,17],背景色:[“rgba(255,99,132,1)”,“rgba(54,162,235,1)”,“rgba(255,206,86,1)”,“rgba(75,192,192,1)”,“rgba(153,102,255,1)”,“rgba(255,159,64,1)”,“rgba(0,0,1)”}):无法打开流:HTTP请求失败!HTTP/1.1400错误请求


URL的格式似乎有问题,我需要做些什么来解决这个问题?

让我们打开
文件的文档获取内容()

注意:

如果要使用特殊字符(如空格)打开URI,则需要使用urlencode()对URI进行编码

您应该使用
urlencode
或更好的
http\u build\u query

例如:

<?php
$url = 'https://quickchart.io/chart';

// replace with your string
$c = "{type: 'doughnut',data:{labels:[\"Male\",\"Female\",\"Unknown\"], datasets: [{data:[16,34,17],backgroundColor:[\"rgba(255, 99, 132, 1)\",\"rgba(54, 162, 235, 1)\",\"rgba(255, 206, 86, 1)\",\"rgba(75, 192, 192, 1)\",\"rgba(153, 102, 255, 1)\",\"rgba(255, 159, 64, 1)\",\"rgba(0, 0, 0, 1)\"]}]}}";

$url = $url . '?' . http_build_query([
    'c' => $c
]);

$image = file_get_contents($url);
// pdf

使用。您可能需要使用urlencode()对url进行编码
<?php
$url = 'https://quickchart.io/chart';

// replace with your string
$c = "{type: 'doughnut',data:{labels:[\"Male\",\"Female\",\"Unknown\"], datasets: [{data:[16,34,17],backgroundColor:[\"rgba(255, 99, 132, 1)\",\"rgba(54, 162, 235, 1)\",\"rgba(255, 206, 86, 1)\",\"rgba(75, 192, 192, 1)\",\"rgba(153, 102, 255, 1)\",\"rgba(255, 159, 64, 1)\",\"rgba(0, 0, 0, 1)\"]}]}}";

$url = $url . '?' . http_build_query([
    'c' => $c
]);

$image = file_get_contents($url);
// pdf