За последние 24 часа нас посетили 30597 программистов и 1801 робот. Сейчас ищут 1010 программистов ...

Как обрезать текст по границам слов

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

  1. antonn

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

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    оо, тут меряются:)
    Код (Text):
    1. bench name: wordwrap first N characters
    2.  empty  :  1.00
    3. snippet1:  7.68
    4. snippet2:  7.67
    5. snippet3: 11.11
    6. snippet4: 10.55
    7.  
    8. total time:  3.65 sec.
    9. php ver: 4.3.10
    10. os: WINNT
     
  2. stas_t

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

    С нами с:
    24 апр 2007
    Сообщения:
    500
    Симпатии:
    0
    Адрес:
    Courbevoie, France
    о! четвёрка пришла!
     
  3. Штаны

    Штаны Guest

    Так выдает ошибку, что windows не нашла php. А вот так http://127.0.0.01/test2.php - работает. Скорость почти та же.
     
  4. lexa

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

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Зачем покупать дополнительное железо под ОС? Надо покупать доп. железо под игры :). Я думал вы, ребята-программисты, любите убивать ни в чём неповинных людей (и есть младенцев). :)

    На Денвере без изменений. Без красивостей только минимум стал меньше (около 12 секунд), а максимум - больше (коло 40). Запускал раз двадцать.

    На VertrigoServ:
    Может, это php 5.1.2 такой долгий или в "Денвере" память течёт.

    З.Ы. У VertrigoServ "Апач" второй версии. Но, имхо, дело в самом php. У кого ещё 5.1.2?
     
  5. KombaInER

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

    С нами с:
    5 апр 2007
    Сообщения:
    221
    Симпатии:
    0
    Адрес:
    Днепр+Крым=Украина
    Код (Text):
    1. bench name: wordwrap first N characters
    2. empty  :  1.00
    3. snippet1:  9.51
    4. snippet2: 11.97
    5. snippet3: 21.66
    6. snippet4: 33.67
    7.  
    8. total time:  4.32 sec.
    9. php ver: 5.2.1
    10. os: WINNT
    это работает фф, дмастер дебиан качает в 5 потоков, нод и еще немного процессов


    Код (Text):
    1.  
    2. bench name: wordwrap first N characters
    3. empty  :  1.00
    4. snippet1:  8.17
    5. snippet2: 10.71
    6. snippet3: 18.41
    7. snippet4: 26.56
    8.  
    9. total time:  3.98 sec.
    10. php ver: 5.2.1
    11. os: WINNT
    это стопнул дмастер, вырубил фф
     
  6. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Ого. Сколько пиписькомеров собралось :)
     
  7. antonn

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

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    Sergey89
    а то%)
    это мы всегда:)
     
  8. Штаны

    Штаны Guest

    Победителя нужно предупредить, что при выдаче приза, будет произведен контрольный замер :)
     
  9. eduha

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

    С нами с:
    8 ноя 2006
    Сообщения:
    278
    Симпатии:
    0
    Адрес:
    Караганда
    Код (Text):
    1. bench name: wordwrap first N characters
    2. empty  :  1.00
    3. snippet1:  3.74
    4. snippet2:  2.66
    5. snippet3:  2.94
    6. snippet4:  3.33
    7.  
    8. total time: 15.05 sec.
    9. php ver: 4.4.2
    10. os: WINNT
    Код (Text):
    1. bench name: wordwrap first N characters
    2. empty  :  1.00
    3. snippet1:  7.34
    4. snippet2:  8.10
    5. snippet3: 11.00
    6. snippet4: 10.54
    7.  
    8. total time:  6.10 sec.
    9. php ver: 4.4.6
    10. os: WINNT
    Код (Text):
    1. bench name: wordwrap first N characters
    2. empty  :  1.00
    3. snippet1: 10.46
    4. snippet2: 15.11
    5. snippet3: 23.71
    6. snippet4: 20.20
    7.  
    8. total time:  3.80 sec.
    9. php ver: 5.1.4
    10. os: WINNT
    Код (Text):
    1. bench name: wordwrap first N characters
    2. empty  :  1.00
    3. snippet1:  7.82
    4. snippet2: 11.50
    5. snippet3: 16.80
    6. snippet4: 18.00
    7.  
    8. total time:  4.61 sec.
    9. php ver: 5.2.1
    10. os: WINNT
     
  10. viphost

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

    С нами с:
    23 мар 2009
    Сообщения:
    307
    Симпатии:
    0
    Помогите разобраться, есть фаил вызывает текст из базы, его надо обрезать, но как, я в PHP неочень, даже совсе неочень поэтому фаил выкладываю
    PHP:
    1. <?
    2.  
    3. include('../.admin/config.inc.php');
    4. include('../.admin/functions.inc.php');
    5.  
    6. $code ="
    7. var tbl_top = '<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\"><tr>';
    8. var tbl_bot = ' </tr><'+'/table>';
    9. var tbl_left = '<td width=\"33%\" class=\"informer_foto_text\"><img src=\"".$site_link."images/informer_tabl_redcorner.gif\" align=\"left\" hspace=\"10\">';
    10. var tbl_right = '</' + 'td>';
    11. var tbl_bottum = '<'+'/table>';
    12. var a_url = '$site_link./news/';
    13. var a_target = 'target=\"_blank\"';
    14.  
    15. document.write(tbl_top);
    16. ";
    17.  
    18. global $DBPrefix;
    19. $q = mysqlquery("SELECT * FROM ".$DBPrefix."informers_categories WHERE id_informer = ".intval($_REQUEST['inf']).";");
    20. $cond = '0 ';
    21. while ($res = mysql_fetch_assoc($q))
    22. {
    23.     $cond .= eregi_replace('AND','OR',getCatCond($res[id_category]));
    24. }
    25. $q_news = mysqlquery("SELECT * FROM ".$DBPrefix."news N WHERE ".$cond." ORDER BY date DESC LIMIT ".intval($_REQUEST['num']).";");
    26.  
    27. while ($res = mysql_fetch_assoc($q_news))
    28. {
    29.     $code .= "document.write(tbl_left + ' <a href=\"'+ a_url +'".$res[id]."/\" class=\"informer_foto_titl\">".$res[title]."</a><br><a href=\"' + a_url +'".$res['id']."/\"><img src=\"".$site_link."images/news/".$res['image']."\" align=\"left\" hspace=\"5\" vspace=\"10\" width=\"80\" height=\"80\"></a><a href=\"' + a_url + '".$res[id]."/\" class=\"informer_foto_text\">".$res['text']."</a>' +tbl_right);";
    30. }
    31. if ($_REQUEST['code']) $encoding = iconv("CP1251", "UTF-8", strtolower(iconv("UTF-8","CP1251",$_REQUEST['code'])));
    32. else $encoding = 'utf-8';
    33.  
    34. switch ($encoding)
    35. {
    36.     case 'utf-8':
    37.     case 'utf8':
    38.         echo $code;
    39.         break;
    40.     case 'cp-1251':
    41.     case 'cp1251':
    42.     case 'windows-1251':
    43.     case 'win-1251':
    44.         echo iconv("UTF-8", "CP1251",$code);
    45.         break;
    46.     case 'koi8-r':
    47.         echo iconv("UTF-81", "KOI8-R",$code);
    48.         break;
    49.     case 'iso8859-5':
    50.         echo iconv("UTF-81", "ISO8859-5",$code);
    51.         break;
    52.     default:
    53.         echo iconv("UTF-8", $encoding, $code);
    54. }
    55. ?>
    56.  
     
  11. stas_t

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

    С нами с:
    24 апр 2007
    Сообщения:
    500
    Симпатии:
    0
    Адрес:
    Courbevoie, France
    здравствуйте, viphost
    если вы сможете выражаться яснее, то поможете нам помочь вам. выложенный набор букав не прояснил ваших потребностей.
    на всякий случай, если вам необходимо получить первые 100 символов строки (в однобайтовой кодировке), можете использовать функцию substr ($res['text'], 0, 100). если не хотите обрезать текст абы как посреди слова, используйте один из четырёх примеров кода, приведённых выше. они обрежут строку по последнему пробелу, предшествующему границе.

    @all
    кстати, интересное наблюдение (возвращаясь на полтора года назад). первый кусок кода (ручная разборка) даст хорошие результаты только в том случае, если граница слова (последний пробел) находится не далее чем в 2-3 символах от границы. если же перед границей оказывается длинное слово, то цикл foreach умирает. попробуйте в примере заменить строку
    Код (Text):
    1. $str = 'Here we got a very very long string which is repeated multiple times to produce a more native look of a news line paragraph...';
    на
    Код (Text):
    1. $str = 'Here we got a very very long string which is repeated multiple times to produce a more native_look_of a news line paragraph...';
    результаты будут выглядеть гораздо драматичнее...
     
  12. viphost

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

    С нами с:
    23 мар 2009
    Сообщения:
    307
    Симпатии:
    0
    Ой спасибо вам большое, сделак как вы показали в первом примере все прекрасно работает, про второй я так ничего и непонял, занятный язык этот PHP, можете дать мне ссылки на учебники онлайн? Буду благодарен вам. Еще раз огромное спасибо! Для вас это все просто, но для меня это непознонное :)
     
  13. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Есть отличная документация http://ru.php.net/manual/ru/
     
  14. viphost

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

    С нами с:
    23 мар 2009
    Сообщения:
    307
    Симпатии:
    0
    Хм. это что прикол? Вы дали мне свою партнерку?
    Странно первый раз меня бросилоо на вашу партнерку, а потом нармально все, непосоветуете такой же скриптик.
     
  15. BuCeFaL

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

    С нами с:
    23 май 2010
    Сообщения:
    1
    Симпатии:
    0
    все намного проще http://web-team.net.ua/php-sub-string.html