2
$q = "my phrase with special chars like úção!?";

while ($i < strlen($q)) {

echo '<img src="'.$q[$i].'.png" />';

$i++;
}

スイッチ/ケースも試しましたが、 ç ã ã â のような文字がある場合、複数の文字があるため、画像を置き換えることができません (HTML エンティティに変換してからケース ccedil で検索していましたが、そうではありません可能)

ありがとうございました

4

2 に答える 2

1

ファイル名にアクセントが許可されていないため、機能しません。

回避策: サポートされている名前でアクセントを付けて画像ファイルに名前を付けてみてください。例: é=>eacute

このコードで:

<?php
$q = "my phrase with special chars like úção!?";

while ($i < strlen($q)) {
    if ($q[$i] == " ")
    {
        echo '<img src="space.png" />';
} else if ($q[$i] == "?") {
    echo '<img src="questionmark.png" />';
    } else {
        echo '<img src="'.str_replace(array("&", ";"), "", htmlentities($q[$i])).'.png" />';
    }

    $i++;
}
?>

このコードはスペースもサポートしています。ただし、space.png という名前の画像が必要です。

生成された出力は次のとおりです。 <img src="m.png" /><img src="y.png" /><img src="space.png" /><img src="p.png" /><img src="h.png" /><img src="r.png" /><img src="a.png" /><img src="s.png" /><img src="e.png" /><img src="space.png" /><img src="w.png" /><img src="i.png" /><img src="t.png" /><img src="h.png" /><img src="space.png" /><img src="s.png" /><img src="p.png" /><img src="e.png" /><img src="c.png" /><img src="i.png" /><img src="a.png" /><img src="l.png" /><img src="space.png" /><img src="c.png" /><img src="h.png" /><img src="a.png" /><img src="r.png" /><img src="s.png" /><img src="space.png" /><img src="l.png" /><img src="i.png" /><img src="k.png" /><img src="e.png" /><img src="space.png" /><img src="uacute.png" /><img src="ccedil.png" /><img src="atilde.png" /><img src="o.png" /><img src="!.png" /><img src="questionmark.png" />

于 2010-10-19T20:29:12.243 に答える
0

ファイルシステム間のさまざまな不一致のため、 Percent Encoding aka URL encodingなどのマッピングを使用します。フレーズに「../../etc/passwd」が含まれていると想像してください。実装。

Wiki には、HTML の Unicodeに関する情報がいくつかあります。Content-Type で正しいエンコーディングのヒントがブラウザーに返されること (たとえば、デフォルトに依存しないこと) と、FS (および PHP/Web サーバー アクセス) が Unicode を使用した名前を許可すること、および/または「話していること」を確認してください。 " 同じエンコーディング (UTF-8/パーセント エンコードなど)。

また、HTTP/URI は Unicode を「理解」せず、ASCII のみを「理解」します。使用される一般的なエンコーディングについて説明しているURL の Unicode 文字を参照してください。最新のブラウザーは、エンコードを自動的に行います (ロケーション バーなどに Unicode グリフを表示したまま)。ただし、このエンコーディングを自動的に実行するブラウザに依存するということは、認識していないブラウザが適切に動作しないことを意味します。したがって、段落 1 に戻ります。

于 2010-10-19T22:27:29.013 に答える