6

PHP の使用: 文字列の相対的な中間にある空白に改行を挿入するにはどうすればよいですか? 言い換えれば、文中の単語を数えて、文の途中で改行するにはどうすればよいでしょうか。

アイデアは、基本的に各タイトルを半分に切り、タイトルが複数行を占める場合は 2 行にすることで、ブログ記事のタイトルの 2 行目に未亡人 (捨て語) を避けることです。

前もって感謝します。

更新: こんにちは。タイトルを空白で分割するには、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;
}   

私は SO を始めたばかりで、コミュニティの力に圧倒されています。乾杯。

4

2 に答える 2

6

PHPのwordwrap()関数を使用します。文字列の長さを 2 で割った値を 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 出力が必要な場合は、オプションの 3 番目の引数を使用して区切り文字を指定できます。このような:

$wrapped = wordwrap($sentence, $width, '<br />');
于 2012-05-04T18:26:50.833 に答える
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;
?>

これを生成します:


<br />\n外に雨が降っていなくて、デイビッドが大丈夫なら、明日学校に行きます。

編集: PHP_EOL を追加して、すべてのシステムと html を <br /> に一致させました。

于 2012-05-04T18:27:17.107 に答える