用图像替换字母(来自短语)

时间:2010-10-19 20:15:36

标签: php word html-entities letters

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

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

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

$i++;
}

我也尝试过使用开关/盒子,但是当我有像çÇ时不能让图像替换工作,因为它不止一个字符(我正在转换为html实体,然后搜索案例ccedil但它的不可能)

谢谢

2 个答案:

答案 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字形等)。但是,依靠浏览器自动执行此编码意味着不知道的浏览器将无法正常运行。因此,回到第一段。