За последние 24 часа нас посетили 97210 программистов и 2681 робот. Сейчас ищут 1473 программиста ...

Функция обрезки текста

Тема в разделе "PHP для новичков", создана пользователем Nikolai_, 31 авг 2010.

  1. Nikolai_

    Nikolai_ Активный пользователь

    С нами с:
    27 авг 2010
    Сообщения:
    133
    Симпатии:
    0
    Подскажите, пожалуйста, с помощью какой функции можно обрезать текст таким образом, чтобы выводились, например, первые 100 знаков, но при этом последнее слово не разрезалось, если оно выходит за границы 100 знаков.
     
  2. neverlose

    neverlose Активный пользователь

    С нами с:
    27 авг 2008
    Сообщения:
    1.112
    Симпатии:
    20
    PHP:
    1. <?php
    2. function my_substr( $text, $symbols = 100)
    3. {
    4.     $symbols = (int)$symbols;
    5.     $pos = strpos( $text, ' ', $symbols);
    6.     return substr( $text, 0, $symbols + (int)$pos);
    7. }
    8.  
    9. echo my_substr( 'Мой длинный текст...');
    10.  
    11. ?>
     
  3. Nikolai_

    Nikolai_ Активный пользователь

    С нами с:
    27 авг 2010
    Сообщения:
    133
    Симпатии:
    0
    neverlose

    Показывает вот такую ошибку
    в строке
    Код (Text):
    1. $pos = strpos( $text, ' ', $symbols);
    С чем это может быть связано?
     
  4. neverlose

    neverlose Активный пользователь

    С нами с:
    27 авг 2008
    Сообщения:
    1.112
    Симпатии:
    20
    Значит строка меньше 100 символов.
    PHP:
    1. <?php
    2. function my_substr( $text, $symbols = 100)
    3. {
    4.     $symbols = (int)$symbols;
    5.  
    6.     if( strlen( $text) <= $symbols)
    7.         return $text;
    8.  
    9.     $pos = strpos( $text, ' ', $symbols);
    10.     return substr( $text, 0, $symbols + (int)$pos);
    11. }
    12.  
    13. echo my_substr( 'Мой длинный текст...');
    14.  
    15. ?>
     
  5. Nikolai_

    Nikolai_ Активный пользователь

    С нами с:
    27 авг 2010
    Сообщения:
    133
    Симпатии:
    0
    Там разные тексты у меня выводятся - одни больше 100 символов, другие - меньше.

    neverlose

    Режет все равно последнее слово. Будьте добры, посмотрите еще код в предыдущем посте, может там где ошибка. Или там всё правильно?
     
  6. neverlose

    neverlose Активный пользователь

    С нами с:
    27 авг 2008
    Сообщения:
    1.112
    Симпатии:
    20
    Да, есть 1.
    PHP:
    1. <?php
    2. function my_substr( $text, $symbols = 100)
    3. {
    4.     $symbols = (int)$symbols;
    5.  
    6.     if( strlen( $text) <= $symbols)
    7.         return $text;
    8.  
    9.     $pos = strpos( $text, ' ', $symbols);
    10.     return substr( $text, 0, (int)$pos);
    11. }
    12. ?>
     
  7. Nikolai_

    Nikolai_ Активный пользователь

    С нами с:
    27 авг 2010
    Сообщения:
    133
    Симпатии:
    0
    Спасибо, neverlose!

    Вставил Ваш пример в свой проект, теперь все показывает как надо. Дописал в силу пока еще слабых познаний в PHP еще кусочек, чтобы выводилась ссылка на полную версию при кол-ве символов >100

    PHP:
    1. <?php
    2. $length = strlen(my_substr($text);
    3. if($length <= 100)
    4.      echo my_substr($text);
    5. else
    6.      echo my_substr($text)." <a href=''>... Далее >></a>";
    7. ?>
     
  8. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
  9. Эраст

    Эраст Активный пользователь

    С нами с:
    31 авг 2010
    Сообщения:
    3
    Симпатии:
    0
    Привет всем!
    Такая проблема: много прог работало на рнр4 и все было нормально, сменил комп - поставил рнр5, прописал путь системы в Path - все равно ничего и старого не пашет(
    можно ли на одном компе использовать рнр5 и рнр4: например рнр5 на апачи а рнр4 на другом сервере, что надо сделать с php.ini, вобщем подскажите плиз как сделать. Думаю это есть у многих.
     
  10. Nikolai_

    Nikolai_ Активный пользователь

    С нами с:
    27 авг 2010
    Сообщения:
    133
    Симпатии:
    0
  11. neverlose

    neverlose Активный пользователь

    С нами с:
    27 авг 2008
    Сообщения:
    1.112
    Симпатии:
    20
    php4 скрипты поддерживаются в php5, а вот обратно - нет.
    Видимо у Вас другая проблема, создайте новую тему её с подробным описанием.
     
  12. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Многие скрипты, писавшиеся на РНР 4, ориентированы на работу со включенными директивами register_globals и register_long_arrays. Кроме того многие инноваторы того времени в своих скриптах использовали ООП, с чем лично я сталкивался. Клонирование объектов в РНР 4 в противопоставление передаче по ссылке в РНР 4 создавало проблемы при портрировании, правда в единичных случаях.

    Поэтому либо подгонять конфигурацию РНР 5 под скрипты, ориентированные на РНР 4, либо ставить две версии с разными параметрами.
     
  13. Эраст

    Эраст Активный пользователь

    С нами с:
    31 авг 2010
    Сообщения:
    3
    Симпатии:
    0
    А как это сделать? и как система будет понимать php.ini?
    Хотелось бы просто иметь 2 сервера: Апачи с рнр5 и любой другой (есть маленький, легко настраиваемый) с рнр4
     
  14. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    чтоб на ссылку не нажимать - текст можно спрятать там
     
  15. nevai

    nevai Активный пользователь

    С нами с:
    25 ноя 2012
    Сообщения:
    1
    Симпатии:
    0
  16. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    =(
    Нужно использовать mb_* функции...
     
  17. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    возможно, человек не разобрался со всей сложностью работы с мультибайтными строками, поэтому решил изобрести велосипед с квадратными колесами. ехать оно едет, но тяжко и недалеко.