Оберните большой текст в PHP - PullRequest
       20

Оберните большой текст в PHP

1 голос
/ 27 сентября 2011

Я хочу разбить строку после определенного количества символов, например, после примерно 20 символов, она должна разбивать строку после ближайшей полной остановки (.) В PHP.

У меня есть такой текст:

Параграф следует как «Наш отдел обслуживания клиентов. Поможет вам с любой проблемой, которую вы можете иметь. Покупатель несет ответственность за возврат Перевозка. Мы предлагаем бесплатную доставку UPS и USPS на континент США. Мы отправляем в течение 1 рабочего дня с момента оплаты. Все остальные перевозки применяются тарифы (подробности см. на аукционе купленного товара). Все заказы получить номер для отслеживания UPS или USPS.

Это то, что я пробовал до сих пор:

$desc = $listings['Item']['Description']; 
echo wordwrap($desc,250,"<br />\n");

Ответы [ 3 ]

0 голосов
/ 27 сентября 2011

Используйте wordwrap() для переноса строки перед заданным количеством символов.Если вы хотите разделить на точку (.), Вы можете сделать что-то с explode() и implode().

0 голосов
/ 27 сентября 2011

Я думаю, что регулярное выражение - это самый простой способ дать вам то, что вы хотите. Учитывая этот вопрос, я уверен, что вы либо никогда не слышали об этом, либо вообще не знаете, как он работает.

Поскольку это довольно сложно, я готов помочь вам, пока вы не справитесь, чтобы он работал именно так, как вы хотите.

Я провел несколько тестов, и это работает для меня.

echo preg_replace('/(\.{20}?|.{10,20}?\. )/', '$1<br />', $desc);

Эта единственная строка кода помещает теги разрыва либо при достижении 20 символов, либо при наличии точки, за которой следует пробел, если до этого есть более 10 символов, чтобы избежать строк из одного слова.

Пример текста, который вы дали, будет взят из:

Параграф следует как «Наш отдел обслуживания клиентов. Поможет вам в любой проблеме, которая может у вас возникнуть. Покупатель несет ответственность за обратную доставку. Мы предлагаем бесплатную наземную доставку UPS или USPS в континентальную часть США. Мы отправляем в течение 1 рабочего дня после оплаты . Действуют все остальные тарифы на доставку (подробности см. На аукционе купленного товара). Все заказы получают номер для отслеживания UPS или USPS.

до:

A Paragraph follows like "Our Customer service dept.<br />
will help you with any issue you might have.<br />
Buyer is responsible for return shipping.<br />
We offer free UPS or USPS ground shipping to the continental U.S.<br />
We ship within 1 business day of payment.<br />
All other shipping rates apply (see auction of item purchased for details).<br />
All orders get a UPS or USPS tracking number.

Дайте мне знать, если вы этого хотите!

0 голосов
/ 27 сентября 2011
<?php
   $text = "Our Customer service dept. will help you with any issue you might have. Buyer is responsible for return shipping. We offer free UPS or USPS ground shipping to the continental U.S. We ship within 1 business day of payment. All other shipping rates apply (see auction of item purchased for details). All orders get a UPS or USPS tracking number.";

   $textTrimmed = substr($text, 20) // The number of chars
   echo $textTrimmed
?>

or you can use a function

function trimTextAfter($text, $numberOfChar){
   echo substr($text,$numberOfChar);
}
...