標籤

2014-09-11

{PHP} 混合字串切割


在撰寫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-pasamioutf8_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] => 囉 )








沒有留言:

張貼留言