За последние 24 часа нас посетили 72048 программистов и 1651 робот. Сейчас ищут 946 программистов ...

Обрезка текста до n кол-ва символов и до точки

Тема в разделе "Прочие вопросы по PHP", создана пользователем zahermaher, 30 сен 2014.

  1. zahermaher

    zahermaher Новичок

    С нами с:
    27 сен 2014
    Сообщения:
    169
    Симпатии:
    14
    Здравствуйте. Мучаюсь с вордпрессом.
    нужно чтобы из цитаты обрезалось 100 слов/символом(все равно) с начала текста.
    Получившийся текст обрезается до первой точки с конца текста.
    Сделал так без вордпресса ,все работает:
    Код (Text):
    1.  
    2. <?php
    3. $text = 'Читая Яндекс.Новости, я задался вопросом: а почему на своих сайтах я обрезаю тексты до указанного символа, часто оставляя в конце нечитаемый набор букв? Красивее же смотрелось бы, если бы строка обрезалась до целого слова. И толи по сложившейся привычке, толи из интереса я таки решил докопаться до решения, которое наверняка понравится посетителям.
    4.  Подумаем, как это можно сделать. ';
    5. header("Content-Type: text/html; charset=utf-8");
    6. $textpreg=substr($text, 0, strpos($text, ' ', 640));
    7. echo substr ($textpreg, 0, strrpos($textpreg, '.')).'.';
    8. ?>
    Добавляю в вордпрессе в functions.php :

    Код (Text):
    1.  
    2. function new_excerpt_length() {
    3.     $text=get_the_excerpt;
    4.     header("Content-Type: text/html; charset=utf-8");
    5.     $text=substr($text, 0, strpos($text, ' ', 240));
    6.     echo substr($text, 0, strrpos($text, '.')).'.';
    7.     }
    8. add_filter('excerpt_length', 'new_excerpt_length');
    Выходит ошибка: Warning: strpos(): Offset not contained in string in /usr/home/www/wwww.com/wp-content/themes/vacity/functions.php
    Жалуется на строчку $text=substr($text, 0, strpos($text, ' ', 240));
    в чем дело понять не могу. помогите.
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    скобочки забыл. перед этим ворнингом должна быть жалоба на андефайнед констант.
     
  3. zahermaher

    zahermaher Новичок

    С нами с:
    27 сен 2014
    Сообщения:
    169
    Симпатии:
    14
    окончательный вариант такой:
    Код (Text):
    1.  
    2. $text=get_the_excerpt();
    3.     $arr = explode( ' ', $text );
    4.     $arr = array_slice( $arr, 0, 50 );
    5.     $text = implode( ' ', $arr ); // Этот текст нужно обработать как...
    6.     unset($arr);
    7.     echo substr($text, 0, strrpos($text, '.')).'.';
    правильно написали что я скобочки забыл,но не это главное,
    обрезку текста сделал по другому и все заработало.