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)
Tags : php