最近碰到一个数据处理的需求:要求是给很多段文字进行处理,每一行数据每隔29行添加换行,但是不能拆分掉单词,比如hello的h刚好在29位那么要在hello前就断开,不多说看代码,php是世界上最好的语言。
比如有其中的一句:Venham a mim, todos os que estão cansados e sobrecarregados, e eu darei descanso a vocês.
/**
* 思路是先根据空格,把每个单词都放到数组,然后遍历数组
* 将数组每个连接字串,如果连接成的字串大于28个那么放到结果数组resarray
* 如果小于则继续串数组的下一个,直到数组遍历完
* 最后再把结果数组的每一个连接就ok
*/
$word = 'Venham a mim, todos os que estão cansados e sobrecarregados, e eu darei descanso a vocês.';
$res = '';
$resarray = array();
$temp = explode(" ", $word);
foreach ($temp as $item){
if((strlen($res) + strlen($item)) <= 28){
$res .= ($item.' ');
}else{
$resarray[] = rtrim($res).'/n';
$res = $item.' ';
}
// 刚好到最后一个结束也要放到结果数组
if($item == $temp[count($temp)-1]){
$resarray[] = $res;
}
}
var_dump($resarray);
$total = '\''.trim(implode('', $resarray)).'\','.PHP_EOL;
echo $total;
结果: