|
|
|
| Добрый день Товарищи кодеры нужна ваша помощь, несколько дней не могу решить проблему:
Есть строка скажим:
СБУ и ФСБ готовят к подписанию протокол к соглашению о сотрудничестве между спецслужбами, согласно которому в Крым – место базирования ЧФ РФ – вернутся сотрудники российской контрразведки. Как известно, 19 офицеров ФСБ, обеспечивавших безопасность российских моряков, покинули территорию Украины в декабре 2009 года.
Нужно разбить на несколько строк по 150 символов в строке
делаю так:
$lungezza=150;
$text="СБУ и ФСБ готовят к подписанию протокол к соглашению
о сотрудничестве между спецслужбами, согласно которому в
Крым – место базирования ЧФ РФ – вернутся сотрудники
российской контрразведки. Как известно, 19 офицеров ФСБ,
обеспечивавших безопасность российских моряков, покинули
территорию Украины в декабре 2009 года.";
$tex_modif=wordwrap($text,$lungezza,"<br>");
$arrey=explode("<br>",$tex_modif);
foreach ($arrey as $stroka){
echo "Value: ".strlen($stroka)."<br />\n";
}
|
И вот здесь проблема, результат:
Value: 139
Value: 140
Value: 122
Value: 146
Value: 29
А мне нужно чтобы по 150, как бы немножко растянуть текст (пробелами)
Спасибо за помощь и за внимания к проблеме | |
|
|
|
|
|
|
|
для: arreyofspace
(14.05.2010 в 15:52)
| | Весь ваш текст(все строки) надо загнать в блок. По-моему как-то так:
print '<div style = "text-align: justify;width:150px;display:block;">' . $all_str . '</div>';
$all_str - весь текст. | |
|
|
|
|
|
|
|
для: Лена
(14.05.2010 в 16:10)
| | Розговор не о HTML, ето нужно зделать средствами PHP | |
|
|
|
|
|
|
|
для: arreyofspace
(14.05.2010 в 15:52)
| | что такое lungezza ? | |
|
|
|
|
|
|
|
для: Trianon
(14.05.2010 в 16:31)
| | 2 | |
|
|
|
|
|
|
|
для: Tonik992
(14.05.2010 в 17:32)
| | >Вот что тебе точно поможет:
>$lungezza=150; ...
Сильно сомневаюсь. | |
|
|
|
|
|
|
|
для: Trianon
(14.05.2010 в 17:35)
| | Я составил тебе алгоритм, и он работает... проверяй у себя
$lungezza=150;
$text="СБУ и ФСБ готовят к подписанию протокол к соглашению
о сотрудничестве между спецслужбами, согласно которому в
Крым – место базирования ЧФ РФ – вернутся сотрудники
российской контрразведки. Как известно, 19 офицеров ФСБ,
обеспечивавших безопасность российских моряков, покинули
территорию Украины в декабре 2009 года.";
for($i=0,$n=0,$point=substr($text,$n,1);$point!==false;$point=substr($text,$n,1)){
$arr[$i] .= $point;
$n++;
if($n%$lungezza==0){
$i++;
}
}
foreach ($arr as $stroka){
echo "Value: ".strlen($stroka)."<br />\n";
}
|
| |
|
|
|
|
|
|
|
для: Tonik992
(14.05.2010 в 17:46)
| | Он и выведет тебе:
Value: 150<br />
Value: 150<br />
Value: 16<br />
но тут происходит разрезание строк.. глянь print_r($arr); | |
|
|
|
|
|
|
|
для: Tonik992
(14.05.2010 в 17:48)
| | Вот именно по етому не подходит :-(
$lungezza - ето длина строк | |
|
|
|
|
|
|
|
для: Tonik992
(14.05.2010 в 17:46)
| | Вы бы смотрели, кому отвечаете.
Мне этот алгоритм как-то без надобности.
И тыкать не стоит. Мы вместе на брудершафт не пили. | |
|
|
|
|
|
|
|
для: Trianon
(14.05.2010 в 16:31)
| | $lungezza - ето длина нужных строк | |
|
|
|
|
|
|
|
для: arreyofspace
(14.05.2010 в 18:04)
| | У меня уже есть примерный алгоритм чтоб не вырезались строки, но было по 150...
Если дождешься или не будет ответа здесь, я позже вечером составлю - скину :о) | |
|
|
|
|
|
|
|
для: arreyofspace
(14.05.2010 в 18:04)
| | и какими языками требуется владеть, чтобы понять это из имени переменной? | |
|
|
|
|
|
|
|
для: Trianon
(14.05.2010 в 18:12)
| |
/*
* $i - номер элемента в массиве
* $n - текущая позиция указателя в строке
* $sp - позиция пробела
*/
function count1($n,$k){ //сколько надо пробелов доставлять
for($i=0;$i<$n-$k;$i++){
$g.=' ';
}
return $g;
}
$lungezza=100;
$text="СБУ и ФСБ готовят к подписанию протокол к соглашению
о сотрудничестве между спецслужбами, согласно которому в
Крым – место базирования ЧФ РФ – вернутся сотрудники
российской контрразведки. Как известно, 19 офицеров ФСБ,
обеспечивавших безопасность российских моряков, покинули
территорию Украины в декабре 2009 года.";
for($i=0,$n=0,$point=substr($text,$n,1),$sp=-1,$k=0;$point!==false;$point=substr($text,$n,1),$n++){
if($point==' '){
$sp=$n;
}
$arr[$i].=$point;
//Если уже лимит на количество $lungezza символов и посл. символ - не пробел
//Заменяем всё от последнего пробела пробелами
if($n==$k+$lungezza && $point!=' '){
$arr[$i]=substr_replace($arr[$i], count1($n,$sp), $sp-$k);
$i++;
$n=$sp;
$k=$n;
}elseif($n==$k+$lungezza && $point==' '){//Если последний символ - пробел - удаляем его.. ибо получится длинна $lungezza+1
$arr[$i]=substr_replace($arr[$i], '', $sp-$k);
$i++;$k=$n;
}
}
foreach ($arr as $stroka){
echo "Value: ".strlen($stroka)."<br />\n";
}
|
Вроде бы работает, и так, как тебе нужно! | |
|
|
|
|
|
|
|
для: Tonik992
(14.05.2010 в 18:58)
| | спасибо именно то что нужно :-) | |
|
|
|
|
|
|
|
для: Tonik992
(14.05.2010 в 18:58)
| | //Если последний символ - пробел - удаляем его.. ибо получится длинна $lungezza+1
почему-бы не воспользоваться функцией rtrim вместо дополнительных substr и т.п | |
|
|
|
|
|
|
|
для: psychomc
(15.05.2010 в 10:23)
| | А я люблю изобретать свои велосипеды! | |
|
|
|
|
|
|
|
для: Tonik992
(15.05.2010 в 15:02)
| | тут же все-равно используется стандартная функция. получается, что свой велосипед на основе другого велосипеда.
да и тем более главное чтобы этот велосипед был эффективным | |
|
|
|