Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在由空格分割的字符串中点添加换行符_Php_String_Text - Fatal编程技术网

Php 如何在由空格分割的字符串中点添加换行符

Php 如何在由空格分割的字符串中点添加换行符,php,string,text,Php,String,Text,使用php:如何在字符串相对中间的空白处插入换行符?或者换句话说,我如何计算一个句子中的单词,然后在句子的中间点放一个换行符 这个想法是为了避免在博客文章标题的第二行出现寡妇(被遗弃的单词),基本上是将每个标题一分为二,如果标题占据多行,则将其放在两行 提前谢谢 更新: 大家好,我意识到我需要preg_split函数来用空格分割标题。对不起,如果问题中的那部分不清楚的话。我修改了亚萨的回答,并使用了: $title_length = strlen($title); if($title_lengt

使用php:如何在字符串相对中间的空白处插入换行符?或者换句话说,我如何计算一个句子中的单词,然后在句子的中间点放一个换行符

这个想法是为了避免在博客文章标题的第二行出现寡妇(被遗弃的单词),基本上是将每个标题一分为二,如果标题占据多行,则将其放在两行

提前谢谢

更新: 大家好,我意识到我需要preg_split函数来用空格分割标题。对不起,如果问题中的那部分不清楚的话。我修改了亚萨的回答,并使用了:

$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;
}   
$title\u length=strlen($title);
如果($title_length>30){
$split=preg_split('/',$title,null,preg_split_NO_EMPTY);
$split_at=ceil(计数($split)/2);
echo$split_at;
$Breaked_title='';
$breake=假;
foreach($word\u pos=>$word){
如果($word\u pos==$split\u at&&$breaked==false){
$BREAKED_title.='
'。“\n”; $break=正确; } $breaked_title.=$word.“; } $title=$breaked_title; }
我是SO的新手,我被社区的力量所震撼。干杯。

使用PHP函数。您可以使用字符串长度除以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;
?>
如果需要HTML输出,可以使用可选的第3个参数指定中断字符。像这样:

$wrapped = wordwrap($sentence, $width, '<br />');
$wrapped=wordwrapp($句子,$width,
);
已更新

<?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;
?>

制作:

如果明天不下雨,我就去上学 外面在下雨,如果大卫同意的话


< > > >编辑< /强>:添加PHPyeOL以匹配所有系统加上HTML与
< /P>你想在句子中间加一个分句吗?嗨,戴维,是的。欢迎任何澄清的帮助。实际上,我需要先检查博客文章标题的长度。然后,如果它要大到适合一条线,我需要在中间放一个折线。这听起来像我需要的。去试试吧。非常感谢。“AsPh这是不好的,因为它可以在一个词的中间切掉句子。”戴维布朗格:不,它不会在词的中间。这就是函数的要点。@asah是的,问题是如果字符串是用UTF-8编码的,wordwrap将在UTF-8实体中剪切,这意味着您将有类似于
blablabla的内容�
gfdgdf
如果您有重音或任何需要实体的东西。@DavidBélanger Ok,似乎还没有UTF-8多字节字符支持(尚未!)。希望这对OP来说不是问题。这个问题没有提到UTF-8。哇,大卫,谢谢。我对正则表达式不是很熟悉,但这似乎非常有用。有什么理由我应该使用这种方法而不是使用“word_wrap()”函数吗?@BrandonBrown很抱歉我编辑了我的文章。最好用word_wrap。我看到它是为了某个标题,一个标题会有很多带空格的单词。@BrandonBrown实际上是,而不是
word\u wrap()
。我更新了我的答案。很抱歉最初的输入错误。仅供参考:
PHP\u EOL
似乎没有什么用处,因为它将为您提供服务器的本机换行符,而不是客户端的。假设您在linux上运行LAMP站点,有人在Windows/IE上浏览。他们在标记中获得linux新行。重点是什么?
<?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;
?>