Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Строковые функции (Нужна скорая помощь)
 
 автор: arreyofspace   (14.05.2010 в 15:52)   письмо автору
 
 

Добрый день Товарищи кодеры нужна ваша помощь, несколько дней не могу решить проблему:
Есть строка скажим:
СБУ и ФСБ готовят к подписанию протокол к соглашению о сотрудничестве между спецслужбами, согласно которому в Крым – место базирования ЧФ РФ – вернутся сотрудники российской контрразведки. Как известно, 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, как бы немножко растянуть текст (пробелами)

Спасибо за помощь и за внимания к проблеме

  Ответить  
 
 автор: Лена   (14.05.2010 в 16:10)   письмо автору
 
   для: arreyofspace   (14.05.2010 в 15:52)
 

Весь ваш текст(все строки) надо загнать в блок. По-моему как-то так:
print '<div style = "text-align: justify;width:150px;display:block;">' . $all_str . '</div>';

$all_str - весь текст.

  Ответить  
 
 автор: arreyofspace   (14.05.2010 в 18:03)   письмо автору
 
   для: Лена   (14.05.2010 в 16:10)
 

Розговор не о HTML, ето нужно зделать средствами PHP

  Ответить  
 
 автор: Trianon   (14.05.2010 в 16:31)   письмо автору
 
   для: arreyofspace   (14.05.2010 в 15:52)
 

что такое lungezza ?

  Ответить  
 
 автор: Tonik992   (14.05.2010 в 17:32)   письмо автору
 
   для: Trianon   (14.05.2010 в 16:31)
 

2

  Ответить  
 
 автор: Trianon   (14.05.2010 в 17:35)   письмо автору
 
   для: Tonik992   (14.05.2010 в 17:32)
 

>Вот что тебе точно поможет:
>$lungezza=150; ...

Сильно сомневаюсь.

  Ответить  
 
 автор: Tonik992   (14.05.2010 в 17:46)   письмо автору
 
   для: 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:48)   письмо автору
 
   для: Tonik992   (14.05.2010 в 17:46)
 

Он и выведет тебе:
Value: 150<br />
Value: 150<br />
Value: 16<br />

но тут происходит разрезание строк.. глянь print_r($arr);

  Ответить  
 
 автор: arreyofspace   (14.05.2010 в 18:02)   письмо автору
 
   для: Tonik992   (14.05.2010 в 17:48)
 

Вот именно по етому не подходит :-(


$lungezza - ето длина строк

  Ответить  
 
 автор: Trianon   (14.05.2010 в 18:13)   письмо автору
 
   для: Tonik992   (14.05.2010 в 17:46)
 

Вы бы смотрели, кому отвечаете.
Мне этот алгоритм как-то без надобности.
И тыкать не стоит. Мы вместе на брудершафт не пили.

  Ответить  
 
 автор: arreyofspace   (14.05.2010 в 18:04)   письмо автору
 
   для: Trianon   (14.05.2010 в 16:31)
 

$lungezza - ето длина нужных строк

  Ответить  
 
 автор: Tonik992   (14.05.2010 в 18:09)   письмо автору
 
   для: arreyofspace   (14.05.2010 в 18:04)
 

У меня уже есть примерный алгоритм чтоб не вырезались строки, но было по 150...
Если дождешься или не будет ответа здесь, я позже вечером составлю - скину :о)

  Ответить  
 
 автор: Trianon   (14.05.2010 в 18:12)   письмо автору
 
   для: arreyofspace   (14.05.2010 в 18:04)
 

и какими языками требуется владеть, чтобы понять это из имени переменной?

  Ответить  
 
 автор: Tonik992   (14.05.2010 в 18:58)   письмо автору
 
   для: 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";
}  

Вроде бы работает, и так, как тебе нужно!

  Ответить  
 
 автор: arreyofspace   (15.05.2010 в 09:22)   письмо автору
 
   для: Tonik992   (14.05.2010 в 18:58)
 

спасибо именно то что нужно :-)

  Ответить  
 
 автор: psychomc   (15.05.2010 в 10:23)   письмо автору
 
   для: Tonik992   (14.05.2010 в 18:58)
 

//Если последний символ - пробел - удаляем его.. ибо получится длинна $lungezza+1
почему-бы не воспользоваться функцией rtrim вместо дополнительных substr и т.п

  Ответить  
 
 автор: Tonik992   (15.05.2010 в 15:02)   письмо автору
 
   для: psychomc   (15.05.2010 в 10:23)
 

А я люблю изобретать свои велосипеды!

  Ответить  
 
 автор: psychomc   (18.05.2010 в 14:01)   письмо автору
 
   для: Tonik992   (15.05.2010 в 15:02)
 

тут же все-равно используется стандартная функция. получается, что свой велосипед на основе другого велосипеда.
да и тем более главное чтобы этот велосипед был эффективным

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования