php 字串處理
記錄一下之前用來處理字串的一些方法,基本上就是常見的字串取代、字串擷取的等等。
字串取代
除了常見的str_replace和正則用的preg_replace以外,preg_replace_callback也是很方便的東西,一樣是用正則的方式處理,不過可以自訂取出的字串要怎麼處理,下方的範例是取出數字後進行計算。
//一般文字
$newstr = str_replace('要找的字','替換的字',"原本的字串");
//正則
$newstr = preg_replace("/(<img[^>]+)\/>/",'$1 alt="" >',$html);
//正則 可自訂回傳處理方式
$html = preg_replace_callback("/font-size: ([0-9.]+)px;/",
function ($matches) {
return "font-size: ".(((float)$matches[1])/16)."em";
},
$html
);
隨機字串
從設定好的字元隨機組成,可以自行加減。
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$charactersLength = strlen($characters);
$randomString = '';
for ($i = 0; $i < 30; $i++) {
$randomString .= $characters[rand(0, $charactersLength - 1)];
}
轉碼
將json等等被編碼的中文字(\uxxxx)轉回
參考https://stackoverflow.com/questions/2934563/how-to-decode-unicode-escape-sequences-like-u00ed-to-proper-utf-8-encoded-cha
$str = preg_replace_callback('/\\\\u([0-9a-fA-F]{4})/', function ($match) {
return mb_convert_encoding(pack('H*', $match[1]), 'UTF-8', 'UCS-2BE');
}, $str);
取字串
//字串 開始字元 取幾字元 字串編碼方式
mb_substr(date("Y"),-2,2,"utf-8");
//抽出src
preg_match('/src="([^"]+)"/', $iframe_string, $match);
$url = $match[1];
補0/補字
補字方式有STR_PAD_RIGHT, STR_PAD_LEFT,STR_PAD_BOTH三種,補右邊、補左邊、補兩邊(非偶數的話右邊優先)
//元字串 捕到幾字元 捕的字 補字方式
str_pad(date("m"),2,'0',STR_PAD_LEFT)