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

Форум Регулярные Выражения

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

 

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

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

тема: обрезать кусок текста до последнего слова
 
 автор: serjinio   (21.02.2009 в 20:21)   письмо автору
 
 

$text=' Достижение данной цели зависит от многих факторов, и среди них одним из главнейших является правильно организованная система в которой;

здесь 134 знака с пробелами
надо получить
Достижение данной цели зависит от многих факторов, и среди них одним из главнейших является правильно организованная система

те обрезать до последнего слова ..которое больше 3 знаков ,но чтобы общее колличество знаков не привышало 130
помогите с регэкспом..уже голову сломал...

  Ответить  
 
 автор: BinLaden   (21.02.2009 в 21:18)   письмо автору
 
   для: serjinio   (21.02.2009 в 20:21)
 

<?php

function str_cut($s$lim)
{
    
$s substr($s0$lim 1);

    while( !
ctype_space($s[$lim]) )
    
$lim--;

    for(
$i $sp $lim$l 0$i 0$i--)
    {
        if( 
ctype_space($s[$i]) )
        {
            
$sp $i;
            
$l 0;
        }
        else 
$l++;

        if( 
$l )
        return 
substr($s0$sp);
    }
}

$text ' Достижение данной цели зависит от многих факторов, и среди них одним из главнейших является правильно организованная система в которой';

echo 
str_cut($text130);

?>

  Ответить  
 
 автор: serjinio   (22.02.2009 в 00:06)   письмо автору
 
   для: BinLaden   (21.02.2009 в 21:18)
 

Супер..огромное спасибо за помощь...

  Ответить  
 
 автор: BinLaden   (22.02.2009 в 00:30)   письмо автору
 
   для: serjinio   (22.02.2009 в 00:06)
 

Кстати, поправьте
<?php
while( $lim >= && !ctype_space($s[$lim]) )
?>

  Ответить  
 
 автор: serjinio   (23.02.2009 в 22:15)   письмо автору
 
   для: BinLaden   (22.02.2009 в 00:30)
 

Возвращаюсь к теме..прогнал много текста..все нормально ..но попался кусок какой-то заколдованный...
<?php
error_reporting
(E_ALL);
function 
_str_cut($s$lim)
{
    
$s substr($s0$lim 1);
while( 
$lim >= && !ctype_space($s[$lim]) )
$lim--;
    for(
$i $sp $lim$l 0$i 0$i--)
    {
        if( 
ctype_space($s[$i]) )
            {
                
$sp $i;
                
$l 0;
            }
        else 
$l++;
        if( 
$l )
        return 
substr($s0$sp);
    }
}
$text 'Это самая суперская статья';
echo 
_str_cut($text50); 


Notice: Uninitialized string offset: 50 in Z:\home\site.ru\www\test\Cut_text.php on line 6
Notice: Uninitialized string offset: 49 in Z:\home\site.ru\www\test\Cut_text.php on line 6
Это самая суперская 


уменьшаем меньше 49..
echo _str_cut($text, 48);

все нормально..мистика какая-то именно с этим куском текста...

  Ответить  
 
 автор: Trianon   (23.02.2009 в 22:28)   письмо автору
 
   для: serjinio   (23.02.2009 в 22:15)
 

ну если нету у Вас в $s столько символов, то как вычислять $s[$lim]?

  Ответить  
 
 автор: serjinio   (24.02.2009 в 01:29)   письмо автору
 
   для: Trianon   (23.02.2009 в 22:28)
 

намек понял..сейчас переделаю...спасибо...

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

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