2013-04-26 91 views
1

後,我有測試代碼檢查輸入值後

$chatText = "Hello world :D"; 

$chatText = str_replace(":D","<img src='happy.jpg' width='20' height='20' alt='Big Smile' />",$chatText); 

echo $chatText; 

基本上它是與image更換:D。 我實際上想要做的是點擊<textarea>提交之後 - 在發佈後替換輸入值即表情符號(圖片)。 如何查看用戶的輸入值進行檢查,看他們是否有例如

":-)" 
+0

與上面所做的完全相同,但您必須先進行後檢查,以便只在發佈帖子時才進行替換。 – Dave 2013-04-26 14:27:07

+0

http://stackoverflow.com/questions/8829848/emoticon-replacement-php – 2013-04-26 14:30:09

+1

使用正則表達式/ [:\ - )D]替換字符串.. – 2013-04-26 14:35:03

回答

1

不需要檢查的str_replace函數將取代它匹配一切鍵入這些字符,只有檢查後是不是空的。

<?php 
if($_POST['textarea_name']!=""){ 
    $text = $_POST['textarea_name']; 
    $chatText = str_replace(":D","<img src='happy.jpg' width='20' height='20' alt='Big Smile' />",$text); 
    echo $chatText; 
} 
?> 

查看更多使用數組的詳細替換;

Emoticon Replacement - PHP

+1

輸出用戶內容到網頁時總是使用'htmlspecialchars'防止XSS。 – 2013-04-26 14:29:47

+0

但是他迴應了一個圖片標籤,它會將所有<變成<和>變爲>,這會將圖片標籤渲染爲普通文本... – Dom 2013-04-26 14:31:20

+0

然後在替換髮生之前使用'hmtlspecialchars' *。 – 2013-04-26 14:33:08

1

像下面將正常爲你工作,

foreach ($_POST as $k=>$v) { 
    $_POST[$k] = str_replace(":D","<img src='happy.jpg' width='20' height='20' alt='Big Smile' />",$v); 
} 

這將只是過程,$ _ POST值提交,其中我正在收集您使用的是聊天所以它應該只處理這樣的消息框,這意味着它將取代這些文本框中的字符。