Использование 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; }
Я новичок в SO, и я взорван силой сообщества. Приветствия.
Используйте wordwrap()
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; ?>
Он выводит:
This is a long sentence that I would like to break up into smaller pieces.
Если вы хотите выводить HTML, вы можете использовать необязательный третий аргумент для указания символов прерывания. Как это:
$wrapped = wordwrap($sentence, $width, '<br />');
ОБНОВЛЕНО
<?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
дождь снаружи, и если Дэвид в порядке с ним.
EDIT : Добавлен PHP_EOL для соответствия всей системе и html с помощью <br />