在撰寫PHP程式時,時常會使用字元切割抓字串。
如substr()
$str = "HelloWorld"; echo substr($str,3); 執行結果: loWorld
或是str_split()
$str = "HelloWorld"; print_r (str_split($str)); 執行結果: Array ( [0] => H [1] => e [2] => l [3] => l [4] => o [5] => W [6] => o [7] => r [8] => l [9] => d )
若是資料組成不複雜,變動性亦不大,用這幾種方式大致上就可解決。
但若遇上中英文組合時,會因字元的不同而造成錯誤。
這時,我在Tsung's Blog找到了Joomla-pasamio的utf8_str_split()
function utf8_str_split($str, $split_len = 1) { if (!preg_match('/^[0-9]+$/', $split_len) || $split_len < 1) { return FALSE; } $len = strlen($str); if ($len <= $split_len) { return array($str); } preg_match_all('/.{' . $split_len . '}|[^\x00]{1,' . $split_len . '}$/us', $str, $ar); return $ar[0]; }簡單解釋是利用正規式加上strlen達成切割的功能。 實際使用結果:
$str = "Hello哈囉"; print_r (utf8_str_split($str)); 執行結果: Array ( [0] => H [1] => e [2] => l [3] => l [4] => o [5] => 哈 [6] => 囉 ) print_r (utf8_str_split($str,3)); 執行結果: Array ( [0] => Hel [1] => lo哈 [2] => 囉 )
沒有留言:
張貼留言