замена букв (из фразы) изображениями - PullRequest
2 голосов
/ 20 октября 2010
$q = "my phrase with special chars like úção!?";

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

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

$i++;
}

Я также попытался с помощью switch / case, но когда у меня есть символы типа ç Ç ã â, я не могу получить замену изображения на работу, так как он содержит более одного символа (я конвертировал в html сущности, а затем искал в случае ccedil, но его невозможно)

спасибо

Ответы [ 2 ]

1 голос
/ 20 октября 2010

Это не сработает, потому что в имени файла не допускаются акценты.

Обходной путь: попробуйте назвать файл изображения с акцентами с поддерживаемым именем. Например: é => 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" />

0 голосов
/ 20 октября 2010

Я бы использовал сопоставление, такое как Процентное кодирование, иначе кодирование URL из-за различных несоответствий между файловой системой - представьте, что фраза включает "../../etc/passwd" - и плохие (или отсутствующие или отличающиеся) юникод-реализации.

В вики есть около Unicode в HTML ; убедитесь, что правильные подсказки кодировки возвращаются в браузер в Content-Type (например, не полагайтесь на значение по умолчанию) и что ваша FS (и доступ к PHP / веб-серверу) разрешают имена с Unicode и / или "разговаривают" "одинаковое кодирование (UTF-8 / процентное кодирование или другое).

Кроме того, HTTP / URI не «понимают» Unicode, только ASCII. См. Unicode-символы в URL-адресах , в которых говорится об общих используемых кодировках. Современные браузеры будут выполнять кодирование автоматически (при этом все еще показывая символы Юникода в строке адреса и т. Д.). Тем не менее, полагаясь на то, что браузер выполняет эту кодировку автоматически, означает, что незнакомые браузеры не будут работать должным образом. Следовательно, вернемся к первому абзацу.

...