2010-10-19 43 views
2
$q = "my phrase with special chars like úção!?"; 

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

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

$i++; 
} 

我也試圖與交換機/情況下,但是當我有字符等C C A A I不能得到的圖像替換,因爲它的多於一個的字符的工作(我是轉換爲HTML實體,然後在案件ccedil尋找,但它是不可能的)替換字母(從短語)與圖像

謝謝

回答

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" />

+0

嗯,我不知道重音是不是支持文件名或只是HTML不會允許加載一個像'ç.png'這樣的名字的圖像 – Cybrix 2010-10-19 20:35:11

+0

根據您的文件系統,它可能都是。 – mattbasta 2010-10-19 23:20:06

0

我會用一個映射如Percent Encoding aka URL encoding因爲文件系統之間的各種錯配的 - 想象該短語包括「../../etc/passwd」 - 和差(或不存在或不同)的unicode實現。

Wiki有一些關於Unicode in HTML;確保正確的編碼提示以Content-Type的形式返回給瀏覽器(例如,不要依賴默認設置),並且FS(以及PHP/Web服務器訪問)允許使用Unicode的名稱和/或「正在講話「相同的編碼(UTF-8 /百分比編碼或其他)。

此外,HTTP/URI不「理解」Unicode,只有ASCII。參見Unicode characters in URLs,其中討論了使用的常用編碼。現代瀏覽器會自動進行編碼(同時仍在位置欄中顯示unicode字形等)。但是,依靠瀏覽器自動執行此編碼意味着未察覺的瀏覽器將無法正常運行。因此,回到第一段。