str_replace(substr($_SESSION['phone'], 0, 1), '+886', $_SESSION['phone']);
假設我是 0911012123
他就會取代成
+886911+88612123
但明明就有只取左邊開始的第一個再改成 +886
是哪裡錯了?....
補充
喔我大概知道了,他取得的是0沒錯,但 str_replace 會把所有 0 改成 +886
可以參考一下這篇文章:
https://stackoverflow.com/questions/1252693/using-str-replace-so-that-it-only-acts-on-the-first-match
依照範例把程式改成這樣:
function str_replace_first($from, $to, $content)
{
$from = '/'.preg_quote($from, '/').'/';
return preg_replace($from, $to, $content, 1);
}
echo str_replace_first('0', '+886', $_SESSION['phone']);
主要是換成使用preg_replace()
來做字串取代,因為他第四個參數可以控制取代次數,詳細說明可以看這裡:PHP preg_replace 函式基本語法
上述的例子是將要尋找的字字串加上正規表示法,如果沒有特殊符號應該也可以直接使用:
preg_replace('0', '+886', $_SESSION['phone'],1)
因為小弟沒有寫過PHP
,所以如果以上回答有問題再麻煩下方留言告訴我