php字符串超长自动换行
1. 英文字符串超长换行使用系统方法wordwrap
2. 中文字符串超长换行自行定义方法mb_wordwrap
/**
* Notes:对传入的中文字符串处理,如果字符串超过限定的长度,则自动进行换行
* docs:
*/
function mb_wordwrap($str, $width = 8, $break = "\r\n"){
// Return short or empty strings untouched
if (empty($str) || mb_strlen($str, 'UTF-8') <= $width) {
return $str;
}
$br_width = mb_strlen($break, 'UTF-8');
$str_width = mb_strlen($str, 'UTF-8');
$return = '';
$last_space = false;
for ($i = 0, $count = 0; $i < $str_width; $i++, $count++) {
// If we're at a break
if (mb_substr($str, $i, $br_width, 'UTF-8') == $break) {
$count = 0;
$return .= mb_substr($str, $i, $br_width, 'UTF-8');
$i += $br_width - 1;
continue;
}
// Keep a track of the most recent possible break point
if (mb_substr($str, $i, 1, 'UTF-8') == " ") {
$last_space = $i;
}
// It's time to wrap
if ($count > $width) {
// There are no spaces to break on! Going to truncate :(
if (!$last_space) {
$return .= $break;
$count = 0;
} else {
// Work out how far back the last space was
$drop = $i - $last_space;
// Cutting zero chars results in an empty string, so don't do that
if ($drop > 0) {
$return = mb_substr($return, 0, -$drop);
}
// Add a break
$return .= $break;
// Update pointers
$i = $last_space + ($br_width - 1);
$last_space = false;
$count = 0;
}
}
// Add character from the input string to the output
$return .= mb_substr($str, $i, 1, 'UTF-8');
}
return $return;
}