2012-10-26 101 views
-1

我做了一個功能,通過從數組中放置新單詞來替換字符串中的單詞。PHP字符串替換str_replace問題

這是我的代碼

function myseo($t){ 
    $a = array('me','lord'); 
    $b = array('Mine','TheLord');  
    $theseotext = $t; 
    $theseotext = str_replace($a,$b, $theseotext); 
    return $theseotext; 
} 

echo myseo('This is me Mrlord'); 

輸出

這是我的MrTheLord

,這是錯誤的,應當打印

這是礦先生

因爲單詞(Mrlord)未包含在數組中。

我希望我以良好的方式解釋我的問題。任何幫助球員

問候

+0

你要求替換'lord',它確實是 – Ibu

+0

是的,但是Mrlord這個詞是一個單詞,我不想被改變......代碼應該改變數組中的單詞 –

+0

你會更好地使用正則表達式 – Ibu

回答

0

根據它是正確的代碼,但希望通過字隔離開來。您可以簡單做到這一點:

function myseo($t){ 
    $a = array(' me ',' lord '); 
    $b = array(' Mine ',' TheLord ');  
    return str_replace($a,$b, ' '.$t.' '); 
} 

echo myseo('This is me Mrlord'); 

記住這是一種廉價的破解,因爲我與周圍空的空間,以確保雙方得到考慮替換字符串。這對間斷的字符串不起作用。替代方案是分解字符串並單獨替換每個單詞。

+0

有沒有什麼辦法可以做到這一點,而絕對不會在 –

+0

這個詞前後增加空格。您可以使用preg_replace並編寫一個適合智能目標的正則表達式。我現在很忙,所以我沒有太多時間來舉個例子,但我可能會遲一點。 –

0

str_replace不只看完整的單詞 - 它會查看任何匹配的字符序列。

因此,lord匹配Mrlord的後期部分。

0

使用str_ireplace取而代之的是,它不區分大小寫。