PHP 5.3でのイメージ文字列の問題

php
PHP 5.3でのイメージ文字列の問題

これが私の機能です:

_
imagestring($ destination、4、68、90、$ text、black);
_

この関数は過去2年間常に機能していましたが、PHPを5.3に更新したため、次のエラーメッセージが表示されます。

警告: `imagestring()`は、パラメータ6が長いことを期待し、文字列は/ home / …​で指定されます オンラインで…​

何が問題で、どのような修正を行う必要がありますか?

  0  0


ベストアンサー

imagestring($destination, 4, 68, 90, $text, black);

「black」を定数として定義していない限り、これはいずれにしても間違った構文です。 これは過去2年間間違っていたはずですが、5.3でPHPのエラーチェックが厳しくなり、警告が有効になったと思われます。 たまたま、偶然の一致によって望ましい結果が得られました。 最後のパラメーターは、実際には次のように定義されます。

_
int $ color + http://www.php.net/manual/en/function.imagecolorallocate.php [` imagecolorallocate() `]で作成された色識別子。
_

そのため、文字列 " black "(引用符に注意)を単に渡すことはできません。次のように、 `imagecolorallocate`の呼び出し結果を渡す必要があります。

imagestring($destination, 4, 68, 90, $text, imagecolorallocate($destination, 0, 0, 0))

2


そこで「black」を渡すと、PHPはグローバル定数「black」を探します。 black`が定義されていない場合、文字列 “black” `にマップされます。

そこで「imagecolorallocate($ destination、0、0、0)」を渡してみてください。

1


`imagestring()`のシグネチャは

_
bool imagestring(リソース$ image、int $ font、int $ x、int $ y、string $ string、int $ color)
_

black`の代わりに “black” を使用することもできます。これは、 int`にキャストすると `0`になり、これは単に黒の整数色識別子になります。 おそらく、PHP 5.3は引数の値に型チェックを追加しました。

*編集:*当て推量でさらに自由度を高め、 E_NOTICE`エラー報告を無効にし、未定義の定数 black`が文字列 `” black “`として評価されたと言います。 PHP 5.3の_did_が引数の型により厳しい制約を導入する場合、これは以前のバージョンで_正常に機能した可能性があります。

ただし、具体的にはhttp://www.php.net/manual/en/function.imagecolorallocate.php [imagecolorallocate()]を使用するのが最善です

$black = imagecolorallocate($destination, 0, 0, 0);

1


タイトルとURLをコピーしました