我试图弄清楚如何将文本解析成3行,每行最多15个字符,不用分割单词。该应用程序将显示一个摘要,其中包含"继续阅读"链接在网页上。
我想要实现的一个例子如下:如果我们采用短语
The lazy dog jumped over the quick brown fox yesterday.
我希望每一行都有最多15个字符。
我希望结果的一个例子是:
The lazy dog
jumped over the
quick brown fox
我已经调整了GentlemanMax提供的示例,以便以数组形式输出结果:
/**
* Split Text
*
* @param string $string
* @param int $totalRow
* @param int $lineLength
*
* @return array
*/
function SplitText($string, $totalRow = 3 , $lineLength = 15) {
$result = [];
$row = 0;
$words = explode(' ', $string);
$result = '';
$line = '';
foreach( $words as $word ) {
if( strlen(trim($line)) + strlen($word) +1 > $lineLength ) {
$result[$row] = $line . trim($word);
++$row;
if ( $row == $totalRow ) { break; }
} else {
$line .= $word . ' ';
}
if(!empty($line)) $result[$row] = $line;
}
return $result;
}
答案 0 :(得分:1)
此函数的最基本版本看起来像这样。
function splitText($string, $lineLength = 15){
$words = explode(' ', $string);
$result = '';
$line = '';
foreach($words as $word){
if( strlen(trim($line)) + strlen($word) +1 > $lineLength ){
//Change PHP_EOL to your preferred new line delimiter
$result .= trim($line) . PHP_EOL; //remove the trailing space from line.
$line = $word . ' ';
}
else $line .= $word . ' ';
}
if(!empty($line)) $result .= $line;
return $result;
}
这会将你的字符串分成几行。这可以很容易地修改,以限制返回的行数或将其他字符附加到最后一行的末尾。请注意,这假定单词由空格分隔,并且标点符号朝向15个字符。
这也假设您希望\n
(换行符)字符作为行分隔符。您可以将PHP_EOL
替换为您想要的换行符。