Как сделать перенос строки через каждые 50 символов?

V
На сайте с 04.06.2014
Offline
54
975

Допустим, есть переменная:

$text = Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

Как сделать перенос строки автоматически, чтобы в строке было не более 50 символов?

Партнёрка №1 в essay-нише (https://goo.gl/YfTPtG)
edogs software
На сайте с 15.12.2005
Offline
775
#1

wordwrap используйте

Разработка крупных и средних проектов. Можно с криптой. Разумные цены. Хорошее качество. Адекватный подход. Продаем lenovo legion в спб, дешевле магазинов, новые, запечатанные. Есть разные. skype: edogssoft
V
На сайте с 04.06.2014
Offline
54
#2

wordwrap не подходит, так как будут обрезаться слова.

LEOnidUKG
На сайте с 25.11.2006
Offline
1762
#3

Так вы определитесь, вам через каждые 50 символов или слов?

Если слов, то такую функцию можно:

$text = "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.";

function viewworld($msg,$count=5,$insert='<br>'){

$msg=explode(" ",$msg);

$i=0;

$text='';

foreach ($msg as $n)

{

$z=' ';

if ($i==($count-1)) {$z=$insert;$i=0;}

$text.=$n.$z;

$i++;

}

return $text;

}

echo viewworld($text,20,'<br>');

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
edogs software
На сайте с 15.12.2005
Offline
775
#4
victorpavloff:
wordwrap не подходит, так как будут обрезаться слова.

Подходит, потому что он слова не обрезает (если конечно специально флаг для обрезания не выставить).

Вы может в мануал хотя бы загляните, прежде чем возражать?

LEOnidUKG, и Вы туда же?😂

V
На сайте с 04.06.2014
Offline
54
#5
edogs:
Подходит, потому что он слова не обрезает (если конечно специально флаг для обрезания не выставить).
Вы может в мануал хотя бы загляните, прежде чем возражать?

LEOnidUKG, и Вы туда же?😂

Да, функция подходит. Только у меня кодировка UTF-8, и с ней функция работает некорректно.

rbbumfirst
На сайте с 03.04.2009
Offline
87
#6

может это поможет http://goo.gl/rSk4gN

Web developer (http://rudov.com). разработка на Go, ReactJS, React Native
LEOnidUKG
На сайте с 25.11.2006
Offline
1762
#7
victorpavloff:
Да, функция подходит. Только у меня кодировка UTF-8, и с ней функция работает некорректно.

Открою секрет, перед скармливанием функции можно перекодировать строку. А потом обратно. 🍿

Ну или в мануале ввести utf-8 и там в комментах дана функция для utf-8

Ещё могу дать свою, которую юзаю, она с игнором html


function wordWrapIgnoreHTML($string, $length = 50, $wrapString = " ",$c='utf-8')
{
$wrapped = '';
$word = '';
$html = false;
$string = (string) $string;
$stringLength = mb_strlen($string,$c);
for($i=0;$i<$stringLength;$i++)
{

$char = mb_substr($string, $i, 1,$c );


/** HTML Begins */
if($char === '<' )
{
if(!empty($word))
{
$wrapped .= $word;
$word = '';
}

$html = true;
$wrapped .= $char;
}

/** HTML ends */
elseif($char === '>' )
{
$html = false;
$wrapped .= $char;
}

/** If this is inside HTML -> append to the wrapped string */
elseif($html)
{
$wrapped .= $char;
}

/** Whitespace characted / new line */
elseif($char === ' ' || $char === "\t" || $char === "\n" )
{
$wrapped .= $word.$char;
$word = '';
}

/** Check chars */
else
{
$word .= $char;
$wordLength = mb_strlen($word,$c);
if($wordLength > $length && $char == ";" && mb_substr ($string, $i+1, 1,$c)== "&" )
{

$wrapped .= $word.$wrapString;
$word = '';
}
else if ($wordLength > $length && !preg_match("/&.{1,7};/i", $word))
{

$wrapped .= $word.$wrapString;
$word = '';
}
else if ($wordLength > $length && !preg_match("/&.{1,7};&/i", $word))
{

$wrapped .= $word.$wrapString;
$word = '';
}

}
}
if($word !== '')
{
$wrapped .= $word;
}

return $wrapped;
}

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий