2012-12-22 69 views
0

那麼,我會更容易地添加表情符號和代碼,它應該被更容易地取代,所以想創建2個數組,我想只有一個。 所以這是我想要的一個例子。 $ Smileys = array(「:D」=>「」);因此不用像 $ Smileys = array(「:D」); $ SmileyReplace = array(「」); 但是有可能嗎? 我似乎無法在Google上找到有幫助的東西。用str_replace替換文本與數組

我的新代碼,我想使用和舊的。 新:

function fixSmileys($Data) { 
     $Smileys = array(
     ":D" => '<img src="/application/modules/Chat/externals/images/smilies/grin.png" title=":D" alt=":D"/>', 
     ":)" => '<img src="/application/modules/Chat/externals/images/smilies/smile.png" title=":)" alt=":)"/>', 
     ":P" => '<img src="/application/modules/Chat/externals/images/smilies/tongue.png" title=":P" alt=":P"/>', 
     ":S" => '<img src="/application/modules/Chat/externals/images/smilies/confused.png" title=":S" alt=":S"/>', 
     ":'(" => '<img src="/application/modules/Chat/externals/images/smilies/cry.png" title=":'."'".'(" alt=":Cry:"/>', 
     ":$" => '<img src="/application/modules/Chat/externals/images/smilies/embarrassed.png" title=":$" alt=":$"/>', 
     ":(" => '<img src="/application/modules/Chat/externals/images/smilies/frown.png" title=":(" alt=":("/>', 
     ":@" => '<img src="/application/modules/Chat/externals/images/smilies/mad.png" title=":@" alt=":@"/>', 
     ";)" => '<img src="/application/modules/Chat/externals/images/smilies/wink.png" title=";)" alt=";)"/>', 
     "B)" => '<img src="/application/modules/Chat/externals/images/smilies/cool.png" title="B)" alt="B)"/>', 
     ":|" => '<img src="/application/modules/Chat/externals/images/smilies/neutral.png" title=":|" alt=":|"/>', 
     ":lol:" => '(?° ?? ?°)', 
     ":derp:" => '<img src="/application/modules/Chat/externals/images/smilies/derp.png" title=":derp:" alt=":derp:"/>', 
     ";D" => '<img src="/application/modules/Chat/externals/images/smilies/awesome.png" title=";D" alt=";D"/>', 
     ":troll:" => '<img src="/application/modules/Chat/externals/images/smilies/troll.png" title=":troll:" alt=":troll:"/>', 
     ":spin:" => '<img src="/application/modules/Chat/externals/images/smilies/abspin.gif" title=":spin:" alt=":spin:"/>', 
     ":love:" => '<img src="/application/modules/Chat/externals/images/smilies/heart.png" title=":love:" alt=":love:"/>', 
     ":sick:" => '<img src="/application/modules/Chat/externals/images/smilies/sick.png" title=":lol:" alt=":sick:"/>', 
     ":O_O:" => '<img src="/application/modules/Chat/externals/images/smilies/sawut.png" title=":O_O:" alt=":O_O:"/>', 
     ":bath:" => '<img src="/application/modules/Chat/externals/images/smilies/bath-time.png" title=":bath:" alt=":bath:"/>', 
     ":socks:" => '<img src="/application/modules/Chat/externals/images/smilies/socks.png" title=":socks:" alt=":socks:"/>', 
     ":boss:" => '<img src="/application/modules/Chat/externals/images/smilies/SuitBozzsmiley.png" title=":boss:" alt=":boss:"/>', 
     ":potato:" => '<img src="/application/modules/Chat/externals/images/smilies/potatoes.png" title=":potato:" alt=":potato:"/>'); 
     return $Smileys[$Data]; 
} 

和老代碼,我currenty只使用str_replace函數和線條的很多使用。

function fixSmileys($Data) { 
     $xCommentx = $Data; 
    $xCommentx1 = str_replace(":D", '<img src="/application/modules/Chat/externals/images/smilies/grin.png" title=":D" alt=":D"/>', $xCommentx); 
    $xCommentx2 = str_replace(":)", '<img src="/application/modules/Chat/externals/images/smilies/smile.png" title=":)" alt=":)"/>', $xCommentx1); 
    $xCommentx3 = str_replace(":P", '<img src="/application/modules/Chat/externals/images/smilies/tongue.png" title=":P" alt=":P"/>', $xCommentx2); 
    $xCommentx4 = str_replace(":S", '<img src="/application/modules/Chat/externals/images/smilies/confused.png" title=":S" alt=":S"/>', $xCommentx3); 
    $xCommentx5 = str_replace(":'(", '<img src="/application/modules/Chat/externals/images/smilies/cry.png" title=":'."'".'(" alt=":Cry:"/>', $xCommentx4); 
    $xCommentx6 = str_replace(":$", '<img src="/application/modules/Chat/externals/images/smilies/embarrassed.png" title=":$" alt=":$"/>', $xCommentx5); 
    $xCommentx7 = str_replace(":(", '<img src="/application/modules/Chat/externals/images/smilies/frown.png" title=":(" alt=":("/>', $xCommentx6); 
    $xCommentx8 = str_replace(":@", '<img src="/application/modules/Chat/externals/images/smilies/mad.png" title=":@" alt=":@"/>', $xCommentx7); 
    $xCommentx9 = str_replace(";)", '<img src="/application/modules/Chat/externals/images/smilies/wink.png" title=";)" alt=";)"/>', $xCommentx8); 
    $xCommentx10 = str_replace("B)", '<img src="/application/modules/Chat/externals/images/smilies/cool.png" title="B)" alt="B)"/>', $xCommentx9); 
    $xCommentx11 = str_replace(":lol:", '(͡° ͜ʖ ͡°)', $xCommentx10); 
    $xCommentx12 = str_replace(":derp:", '<img src="/application/modules/Chat/externals/images/smilies/derp.png" title=":derp:" alt=":derp:"/>', $xCommentx11); 
    $xCommentx13 = str_replace(";D", '<img src="/application/modules/Chat/externals/images/smilies/awesome.png" title=";D" alt=";D"/>', $xCommentx12); 
    $xCommentx14 = str_replace(":troll:", '<img src="/application/modules/Chat/externals/images/smilies/troll.png" title=":troll:" alt=":troll:"/>', $xCommentx13); 
    $xCommentx15 = str_replace(":approve:", '<img src="/application/modules/Chat/externals/images/smilies/approved.png" title=":approve:" alt=":approve:"/>', $xCommentx14); 
    $xCommentx16 = str_replace(":lolol:", '<img src="/application/modules/Chat/externals/images/smilies/lolol.png" title=":brohoof:" alt=":brohoof:"/>', $xCommentx15); 
    $xCommentx17 = str_replace(":asdf:", '<img src="/application/modules/Chat/externals/images/smilies/asdf.png" title=":facehoof:" alt=":facehoof:"/>', $xCommentx16); 
    $xCommentx18 = str_replace(":spin:", '<img src="/application/modules/Chat/externals/images/smilies/abspin.gif" title=":spin:" alt=":spin:"/>', $xCommentx17); 
    $xCommentx19 = str_replace(":love:", '<img src="/application/modules/Chat/externals/images/smilies/heart.png" title=":love:" alt=":love:"/>', $xCommentx18); 
    $xCommentx20 = str_replace(":sick:", '<img src="/application/modules/Chat/externals/images/smilies/sick.png" title=":lol:" alt=":sick:"/>', $xCommentx19); 
    $xCommentx21 = str_replace(":O_O:", '<img src="/application/modules/Chat/externals/images/smilies/sawut.png" title=":O_O:" alt=":O_O:"/>', $xCommentx20); 
    $xCommentx22 = str_replace(":bath:", '<img src="/application/modules/Chat/externals/images/smilies/bath-time.png" title=":bath:" alt=":bath:"/>', $xCommentx21); 
    $xCommentx23 = str_replace(":socks:", '<img src="/application/modules/Chat/externals/images/smilies/socks.png" title=":socks:" alt=":socks:"/>', $xCommentx22); 
    $xCommentx24 = str_replace(":boss:", '<img src="/application/modules/Chat/externals/images/smilies/SuitBozzsmiley.png" title=":boss:" alt=":boss:"/>', $xCommentx23); 
    $xCommentx25 = str_replace(":potato:", '<img src="/application/modules/Chat/externals/images/smilies/potatoes.png" title=":potato:" alt=":potato:"/>', $xCommentx24); 
    $xCommentxFinal = str_replace(":|", '<img src="/application/modules/Chat/externals/images/smilies/neutral.png" title=":|" alt=":|"/>', $xCommentx25); 
    return $xCommentxFinal; 
} 

的currenty代碼工作如下,正在被feeded的$數據包含了諸如「世界,你好:d」所以它會突破所有str_replaces直到找到匹配,並用HTML代碼來替換它。 但我只想讓它像新的,但無用的非工作代碼。 我想這樣做的原因是讓它更容易在網站中添加表情符號。

+4

['strtr'](http://php.net/strtr) - 這也有利於免除'str_replace'帶來的副作用。 - p.s.學習如何使用谷歌,特別是如果你搜索技術的東西。 – hakre

+0

因爲你有一個'$ Smileys'數組,你能不能獲得輸入字符串,然後遍歷$ Smileys並運行一個str_replace?會容易得多。 – kennypu

+0

爲什麼你使用這麼多的'str_replace'爲什麼不把數組全部賦給數組,然後只執行一次str_replace? – samayo

回答

3

您可以嘗試使用的buildin功能被劈裂的陣列使用它在一個功能分爲兩個例如:

... 
return str_replace(array_keys($Smileys), array_values($Smileys), $Data) 

編輯:請記住,這些功能做陣列的副本,以便propably有是比將一個陣列分成兩個更好的解決方案;)

0

我希望這可以幫助你。 :)

function fixSmileys($Data,$direction) { 
     $Smileys = array(
     ":D" => '<img src="/application/modules/Chat/externals/images/smilies/grin.png" title=":D" alt=":D"/>', 
     ":)" => '<img src="/application/modules/Chat/externals/images/smilies/smile.png" title=":)" alt=":)"/>'); 

    foreach($Smileys as $key=>$value){//echo $key; 
     if($direction==1){$Data=str_replace($key,$value,$Data);} 
     elseif($direction==2){$Data=str_replace($value,$key,$Data);} 
    } 

     return $Data; 
} 

,並使用它像這樣:

echo fixSmileys("hello there :D",1)."<br>".fixSmileys('<img src="/application/modules/Chat/externals/images/smilies/grin.png" title=":D" alt=":D"/>',2); 
+1

25 *'str_replace'調用不是很友好的性能 – veritas

+0

是的,我知道,但它的工作:) – FeRtoll

+0

所以你知道,並沒有做任何改進?對於一個程序員來說不是很好的協調;) – veritas