Уменьшить количество символов

Тема в разделе "Как сделать...", создана пользователем anadikt, 10 ноя 2013.

  1. anadikt

    anadikt

    Регистр.:
    29 янв 2010
    Сообщения:
    412
    Симпатии:
    66
    Подскажите, пожалуйста, как сделать так к примеру у статьи на сайте есть заголовок и сама статья, вывожу в title заголовок, а в description саму статью, но нужно, чтобы не вся она была а к примеру первые 150 символов ...

    Возможно такое сделать или нет?
     
  2. Inviseble_Demon

    Inviseble_Demon

    Регистр.:
    11 дек 2008
    Сообщения:
    482
    Симпатии:
    351
    PHP:
    <?php

    function cutString($string$maxlen) {
        
    $len = (mb_strlen($string) > $maxlen)? mb_strripos(mb_substr($string0$maxlen), ' ') : $maxlen;
        
    $cutStr mb_substr($string0$len);
        return (
    mb_strlen($string) > $maxlen)? $cutStr.' ...' $cutStr;
    }

    echo 
    cutString('hjdg asijdh ajshd jkashd kjlashd kjashd kjashd kjash dkjash dklash dakljsdh akjlsdh aklsjdh akljdh lkajd'160);
    echo 
    '<hr>';
    echo 
    cutString('hjdg asijdh ajshd jkashd kjlashd kjashd kjashd kjash dkjash dklash dakljsdh akjlsdh aklsjdh akljdh lkajd'100);
    echo 
    '<hr>';
    echo 
    cutString('hjdg asijdh ajshd jkashd kjlashd kjashd kjashd kjash dkjash dklash dakljsdh akjlsdh aklsjdh akljdh lkajd'16);
    echo 
    '<hr>';

    ?>
    Если работаете с utf-8 прочитайте маны по функциям mb_ и укажите кодеровку явно в них иначе могут быть проблемы.
     
  3. Дмитрий Кесаев

    Дмитрий Кесаев aka Zlobniy Babko

    Заблокирован
    Регистр.:
    10 май 2007
    Сообщения:
    1.332
    Симпатии:
    1.266
    Вот тут почитай... С примерами, картинками, иллюстрацией :D
     
  4. BDSG

    BDSG

    Регистр.:
    28 фев 2009
    Сообщения:
    203
    Симпатии:
    109
    ой беда.. зачем столько проверок то?.. ваша ф-я смело сокращается до двух простых строчек:

    $cutStr = explode( PHP_EOL, wordwrap( $string, $maxlen, PHP_EOL ) );
    return $cutStr[0] . ( strcmp( $string, $cutStr[0]) > 0 ? '...' : '' );

    up.. проглядел, что вы по словам а не символам режете.. исправил..
     
    Последнее редактирование: 11 ноя 2013
  5. Inviseble_Demon

    Inviseble_Demon

    Регистр.:
    11 дек 2008
    Сообщения:
    482
    Симпатии:
    351
    Признаю я даже не в курсе о таких функциях как strcmp и wordwrap.... И да ваш вариант более элегантен хотя бы по тому что не вызывает 2 раза strlen но раз такая песня пошла то и у вас имеется изъян. если в данных встретится PHP_EOL до $maxlen результат будет не корректен.
     
  6. BDSG

    BDSG

    Регистр.:
    28 фев 2009
    Сообщения:
    203
    Симпатии:
    109
    Inviseble_Demon.. согласен.. этот делиметр первое, что под руку подвернулось.. лучше использовать что-то иное, заведомо в подстроку не входящее.. я ставил целью суть передать..