<?php $str = '舉頭望明月低頭思故鄉'; $width = 18; $fontsize = 18; $num = $width/$fontsize; /** * 自動給文字增長換行 * @param int $str 字符串 * @param int $num 字數 一個漢字算1位,2個字母或者數字爲1位 * @param string $line_break 換行符號 \n * @return string 返回字符串 */ function break_string($str,$num){ preg_match_all("/./u", $str, $arr);//將全部字符轉成單個數組 //print_r($arr); $strstr = ''; $width = 0; $arr = $arr[0]; foreach($arr as $key=>$string){ $strlen = strlen($string);//計算當前字符的長度,一個字母的長度爲1,一個漢字的長度爲3 //echo $strlen; if($strlen == 3){ $width += 1; }else{ $width += 0.5; } $strstr .= $string; //計算當前字符的下一個 if(array_key_exists($key+1, $arr)){ $_strlen = strlen($arr[$key+1]); if($_strlen == 3){ $_width = 1; }else{ $_width = 0.5; } if($width+$_width > $num){ $width = 0; $strstr .= "\n"; } } } return $strstr; } echo break_string($str,$num,'\\n');