ФорумПрограммированиеPHP для идиотов → Как реализовать функцию 'Краткое описание'

Как реализовать функцию 'Краткое описание'

  • Roller

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 15 августа 2009 г. 8:18

    Всем добрый день.

    есть ли такая функция в пхп, которая берет из переменной размером (1000 символов) скажем первые 50-100 символов.?

    или надо писать самому такую функцию.
    и чем это можно сделать - оператором FOR, ?
  • phpdude

    Сообщения: 26617 Репутация: N Группа: в ухо

    Spritz 15 августа 2009 г. 8:22, спустя 4 минуты 1 секунду

    [man]substr[/man] {+++6+++} тема боянчег
    Сапожник без сапог
  • Batler

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 15 августа 2009 г. 8:23, спустя 58 секунд

    если переменная - строка, то
    substr($str, int $beg, int $len);
  • Professor

    Сообщения: ? Репутация: N Группа: Адекваты

    Spritz 15 августа 2009 г. 8:24, спустя 56 секунд

    [man]substr[/man] {+++38+++} Чет я долго вспоминал =)
  • Batler

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 15 августа 2009 г. 8:24, спустя 10 секунд

    молодцы ребята =) три раза одно и то же
  • Professor

    Сообщения: ? Репутация: N Группа: Адекваты

    Spritz 15 августа 2009 г. 8:25, спустя 51 секунду

    Это чтоб лучше запомнилось =)
  • Batler

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 15 августа 2009 г. 8:29, спустя 3 минуты 43 секунды

    ему же не экзам сдавать =)
  • Roller

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 15 августа 2009 г. 8:29, спустя 10 секунд


    [man]substr[/man] {+++6+++} тема боянчег


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

    З.Ы. мля век живи век учись, дураком помрешь (

    З.Ы.Ы. отличная функция), а как быть если в переменной слова, и чтобы их не резать на полуслове, а выводить количеством слов - скажем выводить только первые 20 слов и после ставить уже 'читать дальше'?
  • Batler

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 15 августа 2009 г. 8:31, спустя 1 минуту 44 секунды

    я бы регулярку сделал, но можно и без нее.
  • Roller

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 15 августа 2009 г. 8:33, спустя 2 минуты 2 секунды


    я бы регулярку сделал, но можно и без нее.


    это как, на пальцах можешь показать?

    З.Ы. у меня ток, одно в голове взорвать переменную по пробелам и соединить ее по for x<=20 .
  • Troy

    Сообщения: 2533 Репутация: N Группа: Джедаи

    Spritz 15 августа 2009 г. 10:34, спустя 2 часа 55 секунд

    substr($text, 0, 1000);
    Но если делаеш например в CMS краткую новость то используй <cut> или отдельное поле {+++149+++}



    это как, на пальцах можешь показать?


    preg_match("#(.{0, 1000})#", $text, $out); так ?= ))
  • Batler

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 15 августа 2009 г. 8:48, спустя 22 часа 14 минут 1 секунду

    Troy, я в справочнике функции такой не нашел…
  • Batler

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 15 августа 2009 г. 9:01, спустя 13 минут 19 секунд

    моя preg_match('/ ^ (?: [[:alnum:][:punct:]]+ \s* ) {20} /xs', $str, $match);

    тогда в $match[0] будет ровно 20 слов {+++215+++}


    это как, на пальцах можешь показать?

    З.Ы. у меня ток, одно в голове взорвать переменную по пробелам и соединить ее по for x<=20 .


    Хорошая идея =)

    $str = implode(' ', explode(' ', $str, 20));


    P.S. Последний вариант быстрее чем через регулярку.
  • adw0rd

    Сообщения: 22902 Репутация: N Группа: в ухо

    Spritz 15 августа 2009 г. 9:16, спустя 14 минут 35 секунд

    В питоне: var[10:100]
    adw/0
  • Roller

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 15 августа 2009 г. 9:42, спустя 26 минут 37 секунд



    Хорошая идея =)

    $str = implode(' ', explode(' ', $str, 20));


    P.S. Последний вариант быстрее чем через регулярку.


    все хорошо но php в $str[20] - запихивает все остальное, как избавится в массиве от последнего элемента?

    З.Ы. о нашел решение:
    array_pop – Извлечь последний элемент массива
    mixed array_pop ( array &array )


    З.Ы.Ы. вот какой говнокод получился- его как-нибудь можно улучшить?

    		  $short_description = explode(' ', $str, 10);
    $tmp_array = array_pop($short_description);
    $short_description = implode(' ', $short_description);

Пожалуйста, авторизуйтесь, чтобы написать комментарий!