$q = "my phrase with special chars like úção!?";
while ($i < strlen($q)) {
echo '<img src="'.$q[$i].'.png" />';
$i++;
}
我也尝试过使用开关/盒子,但是当我有像çÇ时不能让图像替换工作,因为它不止一个字符(我正在转换为html实体,然后搜索案例ccedil但它的不可能)
谢谢
答案 0 :(得分:1)
它不起作用,因为文件名中允许使用重音符号。
解决方法:尝试使用支持名称的重音命名图像文件。例如:é
=&gt; 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" />
答案 1 :(得分:0)
我会使用Percent Encoding aka URL encoding之类的映射,因为文件系统之间存在各种不匹配 - 想象一下这个短语包含“../../etc/passwd” - 和差(或缺席或差异) )unicode-implementation。
Wiki有一些关于Unicode in HTML的内容;确保在Content-Type中将正确的编码提示返回给浏览器(例如,不依赖于默认值),并且您的FS(以及PHP / Web服务器访问)允许使用Unicode和/或“正在谈话” “相同的编码(UTF-8 /百分比编码或其他)。
此外,HTTP / URI不“理解”Unicode,只有ASCII。请参阅Unicode characters in URLs,其中讨论了所使用的常见编码。现代浏览器将自动进行编码(同时仍在位置栏中显示unicode字形等)。但是,依靠浏览器自动执行此编码意味着不知道的浏览器将无法正常运行。因此,回到第一段。