当初串 TapPay 的时候发现打他后端的手机格式需要国际码 +886,于是想到这个做法可以实现
str_replace_national function
function str_replace_national($from, $to, $content) { $from = '/'.preg_quote($from, '/').'/'; return preg_replace($from, $to, $content, 1);}
使用
str_replace_national('0', '+886', $phone);
所以他只会取代第一个「0」,将它改为 +886
转回来一样原理
str_replace_first function
function str_replace_first($from, $to, $content) { $from = '/'.preg_quote($from, '/').'/'; return preg_replace($from, $to, $content, 4);}
使用
str_replace_first('+886', '0', $phone);
将 +886 取代为原本的「0」
参考
https://ianakaberlin.medium.com/php-%E5%B0%87%E6%89%8B%E6%A9%9F%E8%99%9F%E7%A2%BC%E6%B7%BB%E5%8A%A0%E5%9C%8B%E9%9A%9B%E7%A2%BC-preg-replace-preg-quote-%E4%BC%8A%E6%81%A9%E8%B8%A9%E5%9D%91%E6%97%A5%E8%A8%98-15adc242a995