0

私は自分のサイトでバーコード生成を使用しました。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を取得するために使用されます。

4

2 に答える 2

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は、テキストが含まれ、エンコードされてURLで使用できるようになっています(スペースがコードに置き換えられていることがわかり%20ます)。

于 2012-08-29T09:12:53.047 に答える
1

注:スペースなどの特殊文字を使用してURIを開く場合は、urlencode()を使用してURIをエンコードする必要があります。

http://docs.php.net/file_get_contents

または、サーバーで有効になっている場合は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));
于 2012-08-29T09:42:49.503 に答える