使用php:如何在落在字符串相对中间的空白处插入换行符?或者换句话说,我如何计算句子中的单词,然后在中间点的句子中加一个换行符?
这个想法是在博客文章标题的第二行上避免寡妇(废弃的文字),基本上将每个标题减半,如果标题占用多行,则将其放在两行。
提前致谢。
更新: 大家好,我意识到我需要preg_split函数来按空格分割标题。对不起,如果问题中的部分不清楚。我修改了Asaph的答案并使用了它:
$title_length = strlen($title);
if($title_length > 30){
$split = preg_split('/ /', $title, null, PREG_SPLIT_NO_EMPTY);
$split_at = ceil(count($split) / 2);
echo $split_at;
$broken_title = '';
$broken = false;
foreach($split as $word_pos => $word){
if($word_pos == $split_at && $broken == false){
$broken_title.= '<br />'."\n";
$broken = true;
}
$broken_title .= $word." ";
}
$title = $broken_title;
}
我是SO的新手,我被社区的力量所震撼。欢呼声。
答案 0 :(得分:5)
使用PHP的wordwrap()
功能。您可以使用字符串的长度除以2作为第二个参数。这是一个例子:
<?php
$sentence = 'This is a long sentence that I would like to break up into smaller pieces.';
$width = strlen($sentence)/2;
$wrapped = wordwrap($sentence, $width);
echo $wrapped;
?>
输出:
This is a long sentence that I would
like to break up into smaller pieces.
如果需要HTML输出,可以使用可选的3rd参数指定中断字符。像这样:
$wrapped = wordwrap($sentence, $width, '<br />');
答案 1 :(得分:0)
<强>已更新强>
<?php
$Sentence = 'I will go to the school tomorrow if it is not raining outside and if David is ok with it.';
$Split = explode(' ', $Sentence);
$SplitAt = 0;
foreach($Split as $Word){
$SplitAt+= strlen($Word)-1;
if($SplitAt >= strlen($Sentence)){
break;
}
}
$NewSentence = wordwrap($Sentence, $SplitAt, '<br />' . PHP_EOL);
echo $NewSentence;
?>
制作:
如果不是&lt; br /&gt; \ n
,我明天会去学校 在外面下雨,如果大卫对它好的话。
编辑:添加了PHP_EOL以匹配所有系统加html与&lt; br /&gt;