(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Получение подстроки без потери части слова

Источник: codeguru

Иногда возникает задача получить часть строки фиксированной длины (чаще всего это вводная часть от полного текста для публикации анонса материала). Для того, чтобы получить часть строки фиксированной длины, php-программисты используют функцию substr().

Эта функция возвращает подстроку строки string, начинающейся с start символа по счету и длиной length символов. string substr (string $string , int $start [, int $length ]) 

Но при использовании данной функции возникает следующая проблема - она обрезает часть слова, если его длина больше заданной величины подстроки $length. 

Рассмотрим возможные варианты решения этой проблемы. 

Первый метод 

В результирующую подстроку попадут все слова, имеющие длину не менее заданной (3 символа в нашем случае) 

PHP function 

function _substr($str, $length, $minword = 3)
{
    $sub = '';
    $len = 0;
   
    foreach (explode(' ', $str) as $word)
    {
        $part = (($sub != '') ? ' ' : '') . $word;
        $sub .= $part;
        $len += strlen($part);
       
        if (strlen($word) > $minword && strlen($sub) >= $length)
        {
            break;
        }
    }
   
    return $sub . (($len < strlen($str)) ? '...' : '');
}

"..." будет добавлено к подстроке, если ее длина получится меньше заданной. 

Следующий код выполняет ту же работу, что и substr(), но он лишен проблемы с обрезкой части слова: 

Пример: 

echo _substr('Hello World I live in Kiev',12); // Выведет "Hello World I live..."

Второй метод 

Эта функция задает количество слов, которые будут выделены их строки (с начала строки, разумеется) 

PHP function 

function text_limit($str,$limit=10)
{
    $str_s = '';
    if(stripos($str," ")){
        $ex_str = explode(" ",$str);
        if(count($ex_str)>$limit){
            for($i=0;$i<$limit;$i++){
                $str_s.=$ex_str[$i]." ";
            }
            return $str_s;
        }else{
            return $str;
        }
    }else{
        return $str;
    }
}

Принцип работы: 

- Задаем количество слов, которые необходимо выделить из строки;
- Проходим по строке;
- Если текущий символ не " " (пробел, space), то ищем дальше пока не найдем его;
- Выводим результат. 

Пример: 

echo text_limit('Hello World I live in Kiev',4); // Выведет "Hello World I live "

Ссылки по теме


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 06.07.2012 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
VMware Horizon Apps Standard, v7 : 10 Pack (Named User)
Allround Automation Direct Oracle Access Standard license
ABBYY Lingvo x6 Европейская Профессиональная версия, электронный ключ
Allround Automation PL/SQL Developer - 5 user license
DevExpress / ASP.NET Subscription
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Новости ITShop.ru - ПО, книги, документация, курсы обучения
OS Linux для начинающих. Новости + статьи + обзоры + ссылки
Работа в Windows и новости компании Microsoft
Проект mic-hard - все об XP - новости, статьи, советы
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100