2014-01-20 24 views
0

我正在網站上製作這樣的過程中,會有微笑,而寫一些可以定義頁面上的字符。這就是如何我試着這樣做:展示內容中的笑容 - 沒有微笑出現

   echo $tekst; 

       $smiles = array(
        ':)' => 'devil.png', 
        '>:)' => 'devil.png', 
        'x(' => 'angry.png', 
        ';-)' => 'wink.png' 
       ); 
       foreach($smiles as $key => $img) { 
        $msg = str_replace($key, "<img src=\"emotions/'.$img.'\" height=\"18\" width=\"18\" />", $msg); 
       } 
       echo $msg; 

正是這樣會有什麼網頁上出現的。

問題是這樣的,它不會顯示微笑的圖像。

+0

是在當前目錄中的圖片? –

回答

0

我想這是正確的代碼:

$msg = 'Hello world :)!'; 

$smiles = array(
    ':)' => 'devil.png', 
    '>:)' => 'devil.png', 
    'x(' => 'angry.png', 
    ';-)' => 'wink.png' 
); 

foreach($smiles as $key => $img) { 
    $msg = str_replace($key, '<img src="emotions/'.$img.'" height="18" width="18" />', $msg); 
} 

echo $msg; 

儘量避免在PHP雙引號字符串,他們往往是混亂和難以維護。

事實上,這樣做部分的更好的方式是:

foreach($smiles as $key => $img) { 
    $img = sprintf('<img src="emotions/%s" height="18" width="18" />', $img); 
    $msg = str_replace($key, $img, $msg); 
} 
+0

現在的工作! :)感謝您的幫助! – Jesperbook

0

它看起來像你有一些額外的單引號。當你的代碼目前,輸出爲:

Input: Hello :) world 
Hello <img src="emotions/'.devil.png.'" height="18" width="18" /> world 

如果改變這一行:

$msg = str_replace($key, "<img src=\"emotions/$img\" height=\"18\" width=\"18\" />", $msg); 

你得到正確的輸出:

Hello <img src="emotions/devil.png" height="18" width="18" /> world 

這工作,因爲PHP執行變量代換在字符串上使用雙引號時。有關更多信息,請參閱this page in the PHP documentation

0

下需要改變

$msg = str_replace($key, "<img src=\"emotions/'.$img.'\" height=\"18\" width=\"18\" />", $msg); 
               ^^ ^^ 

產生<img src="emotions/'.devil.png.'" height="18" width="18" />

要:

$msg = str_replace($key, "<img src=\"emotions/$img\" height=\"18\" width=\"18\" />", $msg); 

產生<img src="emotions/devil.png" height="18" width="18" />

您應經常檢查你的view-source來看看什麼東西被生產或做var_dump