Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.04.2012, 22:25
Профессор
Отправить личное сообщение для kilogram Посмотреть профиль Найти все сообщения от kilogram
 
Регистрация: 19.03.2012
Сообщений: 163

Перенос строки по указанному количеству символов
Есть текст: Привет малыш! Как дела?
Нужно перенести слово "малыш" между слловами "Как дела?", чтоб получился в итоге текст:
Привет! Как малыш дела? Слышал что вроде есть функция wordwrap. Что-то она не срабатывает для такого дела. Или этой функцией такое не сделать, нужно один текст заменять на другой функцией str_replace или strtr, этот вариант не покатит с помощью этой функции?
<html><body>
<?php
$t = "Привет малыш! Как  дела?";
echo wordwrap($t,8," ");
?>
</body></html>
Ответить с цитированием
  #2 (permalink)  
Старый 17.04.2012, 23:44
Аватар для T-sh
Профессор
Отправить личное сообщение для T-sh Посмотреть профиль Найти все сообщения от T-sh
 
Регистрация: 04.12.2009
Сообщений: 579

нет, wordwrap — перенос части строки на новую строку.

т.е. с помощью wordwrap можно сделать так:

$str = "Привет, малыш! Как дела?";
$str2 = wordwrap(str,15);

$str2 равна "Привет, малыш!<br/>Как дела?":
Привет, малышь!
Как дела?


Чтобы меня слова местами нужно заменять подстроки, либо обращаться к строке как к массиву и пенять местами элементы.
__________________
С моих слов записано верно.
Ответить с цитированием
  #3 (permalink)  
Старый 17.04.2012, 23:55
Профессор
Отправить личное сообщение для kilogram Посмотреть профиль Найти все сообщения от kilogram
 
Регистрация: 19.03.2012
Сообщений: 163

Только перенос слов?Какая-то функция ненужная.
<?php
$str = "Привет, малыш! Как дела?";
$str2 = wordwrap($str,15,"<br />"); 
echo $str2; 
?>

Последний раз редактировалось kilogram, 18.04.2012 в 00:07.
Ответить с цитированием
  #4 (permalink)  
Старый 18.04.2012, 00:01
Аватар для T-sh
Профессор
Отправить личное сообщение для T-sh Посмотреть профиль Найти все сообщения от T-sh
 
Регистрация: 04.12.2009
Сообщений: 579

Сообщение от kilogram Посмотреть сообщение
Только перенос слов?Ккакая-то функция ненужная.
<?php
$str = "Привет, малыш! Как дела?";
$str2 = wordwrap($str,15,"<br />"); 
echo $str2; 
?>
<br> указывать необязательно, он по умолчанию идёт вроде

нужная функция когда в очень длинную строку нужно добавить разделители через определенную длину — wordwrap срабатывает значительно быстрее других способов.
__________________
С моих слов записано верно.
Ответить с цитированием
  #5 (permalink)  
Старый 18.04.2012, 00:47
Профессор
Отправить личное сообщение для kilogram Посмотреть профиль Найти все сообщения от kilogram
 
Регистрация: 19.03.2012
Сообщений: 163

Код:
<html><body>
<?php
function cite($ourText, $maxlen=60, $prefix="> "){
	$st = wordwrap($ourText,$maxlen-strlen($prefix),"\n");
	$st = $prefix.str_replace("\n","\n$prefix",$st);
	return $st;
}
echo '<pre>';
echo cite("Томас Джефферсон, один из авторов Декларации независимости, писал,
 что «все люди созданы равными». При этом однако третий президент США всю 
жизнь оставался рабовладельцем. Сейчас в Америке проходят две выставки, в
 центре внимания которых – это парадоксальное расхождение между идеями 
Джефферсона и его образом жизни. Наш корреспондент Джули Табо рассказывает
 подробнее об экспозиции в его знаменитой усадьбе Монтиселло. Смотрите видео.",20);
echo '</pre>';
?>
</body></html>
Растолкуйте пожалуйста вот эти 2 строки:
$st = wordwrap($ourText,$maxlen-strlen($prefix),"\n");
	$st = $prefix.str_replace("\n","\n$prefix",$st);

Что вот это за действие? $prefix.str_replace почему точка "."?
Что делает первая строка?
Ответить с цитированием
  #6 (permalink)  
Старый 18.04.2012, 01:01
Аватар для T-sh
Профессор
Отправить личное сообщение для T-sh Посмотреть профиль Найти все сообщения от T-sh
 
Регистрация: 04.12.2009
Сообщений: 579

1. первая строка кода в строке $ourText через каждый 18 символов добавляет перенос строки \n

18, потому что функции в качестве второго аргумента передаётся 20, а в качестве третьего — "> ".
$maxlen-strlen($prefix) = 20 минус (длина третьего аргумента).

2. str_replace("\n","\n$prefix",$st);
замена символа переноса строки на перенос строки + "> "

$st = $prefix.str_replace("\n","\n$prefix",$st);

точка — конкатенация, т.е. склеивание строк.
$st станет равна "> "+ то, что получится после замены
__________________
С моих слов записано верно.
Ответить с цитированием
  #7 (permalink)  
Старый 18.04.2012, 01:15
Профессор
Отправить личное сообщение для kilogram Посмотреть профиль Найти все сообщения от kilogram
 
Регистрация: 19.03.2012
Сообщений: 163

Передача 2 параметру было 20, значит переменная $maxlen перелпределяется в значение 20. В строке 20-2=18 символов вывести на одну строку?
$maxlen-strlen($prefix)
Ответить с цитированием
  #8 (permalink)  
Старый 18.04.2012, 01:18
Аватар для T-sh
Профессор
Отправить личное сообщение для T-sh Посмотреть профиль Найти все сообщения от T-sh
 
Регистрация: 04.12.2009
Сообщений: 579

Сообщение от kilogram Посмотреть сообщение
Передача 2 параметру было 20, значит переменная $maxlen перелпределяется в значение 20. В строке 20-2=18 символов вывести на одну строку?
$maxlen-strlen($prefix)
дословно это будет звучать так: перед каждым 18-ым символом строки добавить символ переноса.
__________________
С моих слов записано верно.
Ответить с цитированием
  #9 (permalink)  
Старый 18.04.2012, 01:34
Профессор
Отправить личное сообщение для kilogram Посмотреть профиль Найти все сообщения от kilogram
 
Регистрация: 19.03.2012
Сообщений: 163

Попробовал в этой строке убрать $prefix. вывело все то же самое, только в первой строке не поставило перед текстом знак ">",а в остальных строках поставило. получается конкатенация в этом месте с переменной $prefix. нужна лишь для первой строки?
Код:
$st = $prefix.str_replace("\n","\n$prefix",$st);
Ответить с цитированием
  #10 (permalink)  
Старый 18.04.2012, 01:38
Аватар для T-sh
Профессор
Отправить личное сообщение для T-sh Посмотреть профиль Найти все сообщения от T-sh
 
Регистрация: 04.12.2009
Сообщений: 579

Сообщение от kilogram Посмотреть сообщение
Попробовал в этой строке убрать $prefix. вывело все то же самое, только в первой строке не поставило перед текстом знак ">",а в остальных строках поставило. получается конкатенация в этом месте с переменной $prefix. нужна лишь для первой строки?
Код:
$st = $prefix.str_replace("\n","\n$prefix",$st);
да, конкатенация здесь только для того, чтоб перед первой строкой вывести "> "
__________________
С моих слов записано верно.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка строки символов Depressa Events/DOM/Window 0 17.04.2012 21:41
Удалении символов из строки strike Общие вопросы Javascript 5 10.04.2012 03:12
Стиль по количеству символов utb jQuery 4 28.03.2012 15:11
автоматический перенос строки в textarea BorisBritva jQuery 5 02.03.2012 18:21
Как убрать последний перенос строки? mff Общие вопросы Javascript 6 25.05.2010 17:08