2013-10-14 38 views
1

我有一個值保存在陣列$ phone中,並且想要刪除「Tel。」「 - 」。 $手機的原始價值是「電話+47 - 87654321」,我希望它是「+4787654321」PHP str_replace - 過濾並從數組中刪除2個單詞?

到目前爲止,我有此代碼:

$phone = Tel. +47 - 87654321; 

echo "<br />" 
. str_replace("Tel. ","",($phone->textContent) 
. str_replace(" - ","",$phone->textContent)); 

這個結果:

+47 - 87654321 + 4787654321

如何避免打印(回聲)第一這段代碼的一部分?這是一個更好的方式來做到這一點?

爲我工作:

echo "<br />" . str_replace(array("Tel. ", " - "), "", $phone->textContent); 

回答

3

,因爲他們更改後返回整個字符串不要從兩個功能串連結果。

而是改變它在接下來的通話

$string = str_replace("Tel. ", "", $phone->textContent); 
$string = str_replace(" - ", "", $string); 

或通過項目的陣列str_replace()

$string = str_replace(array("Tel. ", " - "), "", $phone->textContent); 
0

將您的中間結果分配給一個變量。嘗試:

$temp = str_replace("Tel. ","",($phone->textContent); 
echo "<br />". str_replace(" - ","",$temp)); 
0
echo preg_replace ("/^(.*)(?=\\+)(.*)$/", "$2", "Tel. +47 - 87654321") 

將輸出:

+47 - 87654321 

說明:
它使用正則表達式,以字符串分爲兩組:

  1. 所有前來的人物之前+(使用lookahead)
  2. 任何涉及該+包括+

再經過僅與第二組替換