1

imagettftextを使用して、特定のテキスト文字の画像を作成しています。これを行うには、16進文字コードの配列を同等のHTMLに変換する必要がありますが、これを行うためのPHPに組み込まれている機能が見つからないようです。私は何が欠けていますか?(検索を通じて、PHP関数imagettftext()とunicodeに出くわしましたが、どの答えも私が必要としていることを実行していないようです-一部の文字は変換されますが、ほとんどは変換されません)。

結果のHTML表現は次のとおりです(ブラウザで)

 [characters] => Array
    (
        [33] => A
        [34] => B
        [35] => C
        [36] => D
        [37] => E
        [38] => F
        [39] => G
        [40] => H
        [41] => I
        [42] => J
        [43] => K
        [44] => L
    )

これはこの配列に由来します(imagettftextでレンダリングすることはできません):

 [characters] => Array
    (
        [33] => &#x41
        [34] => &#x42
        [35] => &#x43
        [36] => &#x44
        [37] => &#x45
        [38] => &#x46
        [39] => &#x47
        [40] => &#x48
        [41] => &#x49
        [42] => &#x4a
        [43] => &#x4b
        [44] => &#x4c
    )
4

2 に答える 2

4

PHPマニュアルのサンプルに基づいて、正規表現を使用してこれを行うことができます。

$newText = preg_replace('/&#x([a-f0-9]+)/mei', 'chr(0x\\1)', $oldText);

配列要素に末尾(これらのエンティティの必要な部分)がないため、rawhtml_entity_decode()があなたのケースで機能するかどうかはわかりません。;

編集、2015年7月:

/e修飾子が非推奨になっていることを指摘するBenのコメントに応えてpreg_replace_callback()、匿名関数を使用してこれを作成する方法は次のとおりです。

$newText = preg_replace_callback(
    '/&#x([a-f0-9]+)/mi', 
    function ($m) {
        return chr(hexdec($m[1]));
    },
    $oldText
);
于 2012-10-02T14:20:19.907 に答える
0

ええと、あなたは明らかに十分に検索していません。html_entity_decode()

于 2012-10-02T14:19:31.127 に答える