| 
	| 
	
	| 
		
	| 
			
			 
			
				17.04.2012, 22:25
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 19.03.2012 
						Сообщений: 163
					 
		
 |  |  
	| 
				Перенос строки по указанному количеству символов
			 Есть текст: Привет малыш! Как  дела? 
Нужно перенести слово "малыш" между слловами "Как дела?", чтоб получился в итоге текст: 
Привет! Как малыш дела? Слышал что вроде есть функция  wordwrap. Что-то она не срабатывает для такого дела. Или этой функцией такое не сделать, нужно один текст заменять на другой функцией str_replace или strtr, этот вариант не покатит с помощью этой функции?
 
<html><body>
<?php
$t = "Привет малыш! Как  дела?";
echo wordwrap($t,8," ");
?>
</body></html>
 |  |  
	| 
		
	| 
			
			 
			
				17.04.2012, 23:44
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 04.12.2009 
						Сообщений: 579
					 
		
 |  |  
	| нет, wordwrap — перенос части строки на новую строку.
 т.е. с помощью wordwrap можно сделать так:
 
 $str = "Привет, малыш! Как дела?";
 $str2 = wordwrap(str,15);
 
 $str2 равна "Привет, малыш!<br/>Как дела?":
 Привет, малышь!
 Как дела?
 
 
 Чтобы меня слова местами нужно заменять подстроки, либо обращаться к строке как к массиву и пенять местами элементы.
 
				__________________С моих слов записано верно.
 |  |  
	| 
		
	| 
			
			 
			
				17.04.2012, 23:55
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 19.03.2012 
						Сообщений: 163
					 
		
 |  |  
	| Только перенос слов?Какая-то функция ненужная. 
<?php
$str = "Привет, малыш! Как дела?";
$str2 = wordwrap($str,15,"<br />"); 
echo $str2; 
?>
			 Последний раз редактировалось kilogram, 18.04.2012 в 00:07.
 |  |  
	| 
		
	| 
			
			 
			
				18.04.2012, 00:01
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 04.12.2009 
						Сообщений: 579
					 
		
 |  |  
	| 
	
 
	| Сообщение от kilogram   |  
	| Только перенос слов?Ккакая-то функция ненужная. 
 
<?php
$str = "Привет, малыш! Как дела?";
$str2 = wordwrap($str,15,"<br />"); 
echo $str2; 
?>
 |  
	
 <br> указывать необязательно, он по умолчанию идёт вроде
 
нужная функция    когда в очень длинную строку нужно добавить разделители через определенную длину — wordwrap срабатывает значительно быстрее других способов.
				__________________С моих слов записано верно.
 |  |  
	| 
		
	| 
			
			 
			
				18.04.2012, 00:47
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 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 почему точка "."? 
Что делает первая строка? |  |  
	| 
		
	| 
			
			 
			
				18.04.2012, 01:01
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 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 станет равна "> "+ то, что получится после замены  
				__________________С моих слов записано верно.
 |  |  
	| 
		
	| 
			
			 
			
				18.04.2012, 01:15
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 19.03.2012 
						Сообщений: 163
					 
		
 |  |  
	| Передача 2 параметру было 20, значит переменная $maxlen перелпределяется в значение 20. В строке  20-2=18 символов вывести на одну строку?
 
$maxlen-strlen($prefix)
 |  |  
	| 
		
	| 
			
			 
			
				18.04.2012, 01:18
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 04.12.2009 
						Сообщений: 579
					 
		
 |  |  
	| 
	
 
	| Сообщение от kilogram   |  
	| Передача 2 параметру было 20, значит переменная $maxlen перелпределяется в значение 20. В строке  20-2=18 символов вывести на одну строку? 
 
$maxlen-strlen($prefix)
 |  
	
 дословно это будет звучать так: перед каждым 18-ым символом строки добавить символ переноса.
				__________________С моих слов записано верно.
 |  |  
	| 
		
	| 
			
			 
			
				18.04.2012, 01:34
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 19.03.2012 
						Сообщений: 163
					 
		
 |  |  
	| Попробовал в этой строке убрать $prefix. вывело все то же самое, только в первой строке не поставило перед текстом знак ">",а в остальных строках поставило. получается конкатенация в этом месте с переменной $prefix. нужна лишь для первой строки?
 
	
 
	| Код: |  
	| $st = $prefix.str_replace("\n","\n$prefix",$st); |  
	
 |  |  
	| 
		
	| 
			
			 
			
				18.04.2012, 01:38
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 04.12.2009 
						Сообщений: 579
					 
		
 |  |  
	| 
	
 
	| Сообщение от kilogram   |  
	| Попробовал в этой строке убрать $prefix. вывело все то же самое, только в первой строке не поставило перед текстом знак ">",а в остальных строках поставило. получается конкатенация в этом месте с переменной $prefix. нужна лишь для первой строки? 
 
	
 
	| Код: |  
	| $st = $prefix.str_replace("\n","\n$prefix",$st); |  
	
 |  
	
 да, конкатенация здесь только для того, чтоб перед первой строкой вывести "> "
				__________________С моих слов записано верно.
 |  |  |  |