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

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

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

$i++;
}

我还尝试了开关/情况,但是当我有像ççâ之类的字符时 - 我无法将图像更换为工作,因为它多个字符(我正在转换为HTML实体,然后在CaseCedil中进行搜索,但它不可能),但它不可能)

谢谢你

有帮助吗?

解决方案

它行不通,因为文件名中允许使用ACCENT。

解决方法:尝试用支持名称的口音命名图像文件。例如: é => 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" />

其他提示

我会使用诸如 编码又称URL编码的百分比 由于文件系统之间的各种不匹配 - 想象该短语包含“ ../../../etc/passwd” - 以及糟糕的(或不存在或扩散)Unicode-Implementations。

维基有一些 HTML中的Unicode;确保正确的编码提示将返回内容类型的浏览器(例如,不要依赖默认值),并且您的FS(以及PHP/Web-Server访问)允许使用Unicode和/或在说话”。 “相同的编码(UTF-8/%编码,或其他编码)。

另外,http/uris不“理解” Unicode,只有ASCII。看 URL中的Unicode字符 谈论使用的常见编码。现代浏览器将自动执行编码(同时仍在位置栏中显示Unicode字形等)。但是,依靠浏览器可以自动执行此编码,这意味着不知道浏览器将无法正确采取行动。因此,回到第一段。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top