Try   HackMD

PHP 中英文字串分割

tags: PHP 中文分割

在串接硬體列印時,經常會遇到需要手動將過長字串折行的問題,以下為範例:

  • mb_strlen         判斷字元數(中文=1,英數=1)
  • mb_strwidth     判斷字元數(中文=2,英數=1)
  • mb_strimwidth 分割字串(若切到中文,會擷取到前一個中文字)
<?php //原始字串 $str = '安裝 Laravel 之後,你必須設定一些權限。storage 和 bootstrap/cache 目錄中的目錄必須讓你的伺服器有寫入權限,否則 Laravel 就無法執行。'; //每行字串的字元數 $str_row_len = 23; //存放字串陣列 $arrStr = []; //判斷是否還需要切割 while(mb_strlen($str)>0){ //將切割的字串放到$str_tmp $str_tmp = mb_strimwidth($str, 0, $str_row_len); //取得剩餘字串,此處擷取長度必須使用mb_strwidth($str),才能獲取真正長度 $str = mb_strimwidth($str,mb_strlen($str_tmp),mb_strwidth($str)); //存放字串 $arrStr[] = $str_tmp; } echo print_r($arrStr,1); ?> //輸出 Array ( [0] => 安裝 Laravel 之後,你必 [1] => 須設定一些權限。storage [2] => 和 bootstrap/cache 目 [3] => 錄中的目錄必須讓你的伺 [4] => 服器有寫入權限,否則 La [5] => ravel 就無法執行。 )