我在我的网站上使用条形码生成。当我在HTML标签中使用它时它工作正常。
<div class="barcode_img"><img src="<?php echo AT::getUrl(); ?>/barcode/image.php?code=code39&o=1&dpi=150&t=30&r=1&rot=0&text=TEST NAME WITH SPACE&f1=Arial.ttf&f2=10&a1=&a2=&a3=" class="barcode fr"/></div>
我需要将该图像存储在名为“media / barcode /”的本地文件夹中。为此,我使用了以下代码:
$valid_barcodename="testimage";
$barcodeurl = AT::getUrl() . "barcode/image.php?code=code39&o=1&dpi=150&t=30&r=1&rot=0&text=TEST NAME WITH SPACE&f1=Arial.ttf&f2=10&a1=&a2=&a3=";
$barcode_img = 'media/barcode/testing_' .$valid_barcodename . '.png';
file_put_contents($barcode_img, file_get_contents($barcodeurl));
存储在该文件夹中的图像不为空。当我分析它时,我发现,如果我给出名称“TEST NAME WITH SPACE”而没有空格(TESTNAMEWITHSPACE),它就可以了。
但是,如果我用空间给它,它将无法工作。有什么问题?
注意:AT :: getUrl() - 用于获取我的基本URL。
答案 0 :(得分:2)
空间在URL中具有特殊含义,因此您必须对它们进行编码:
$text = urlencode("TEST NAME WITH SPACE")
$barcodeurl = AT::getUrl() . "barcode/image.php?code=code39&o=1&dpi=150&t=30&r=1&rot=0&text=". $text ."&f1=Arial.ttf&f2=10&a1=&a2=&a3=";
在上面的代码中,$text
现在包含您的文字,已编码并可以在您的网址中使用(您会注意到空格已被%20
代码替换)。
答案 1 :(得分:1)
注意:如果要打开带有特殊字符的URI,例如空格, 你需要用urlencode()编码URI。
http://docs.php.net/file_get_contents
或者,如果在服务器上启用了cURL,则可以使用cURL。
function curl($url, $setopt = array(), $post = array())
{
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);
if( ! empty($post))
{
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $post);
}
if( ! empty($setopt))
{
foreach($setopt as $key => $value)
{
curl_setopt($curl, constant($key), $value);
}
}
$data = curl_exec($curl);
curl_close($curl);
return $data;
}
用法:
file_put_contents($barcode_img, curl($barcodeurl));