За последние 24 часа нас посетили 36523 программиста и 1718 роботов. Сейчас ищут 807 программистов ...

Поиск (обрезание)

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

  1. AlexALX

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

    С нами с:
    13 июн 2007
    Сообщения:
    294
    Симпатии:
    5
    Адрес:
    Киев
  2. AlexALX

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

    С нами с:
    13 июн 2007
    Сообщения:
    294
    Симпатии:
    5
    Адрес:
    Киев
    Код (Text):
    1. function maxsite_str_word($text, $counttext = 10, $sep = ' ') {
    2.     $words = split($sep, $text);
    3.  
    4.     if ( count($words) > $counttext )
    5.         $text = join($sep, array_slice($words, 0, $counttext));
    6.  
    7.     return $text;
    8. }
    ктонибуть можеьт эту рабочую корректную функию модернизировать так, чтобы она удаляла слова не с первого продела (0) а с определённого слова, притом удаляло например 10 слов спереди и сзади слова.... ПЛЗ!
     
  3. AlexALX

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

    С нами с:
    13 июн 2007
    Сообщения:
    294
    Симпатии:
    5
    Адрес:
    Киев
    Я готов заплатить если не смогу найти... Но не много, денег мало... Если пару людей не скажут ещё, то Заплачу.
     
  4. Adil

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

    С нами с:
    21 сен 2006
    Сообщения:
    280
    Симпатии:
    0
    после этого точно никто не скажет )
     
  5. AlexGousev

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

    С нами с:
    25 мар 2006
    Сообщения:
    1.505
    Симпатии:
    0
    Адрес:
    Москва
    PHP:
    1. <?php
    2.  
    3. header('Content-type: text/plain; charset=utf-8');
    4.  
    5. function search_words($text, $substr, $words_before, $words_after) {
    6.     preg_match_all('%((?:\S+\s+){0,'.(int)$words_before.'}\b'.preg_quote($substr, '%').'\b(?:\s+\S+){0,'.(int)$words_after.'})%i', $text, $matches, PREG_PATTERN_ORDER);
    7.     return $matches[1];
    8. }
    9.  
    10. $text = 'мне нужно чтобы ... это для поиска, мне нужно точбы оно выводило не весь найденый текст (он может быть большым) а только например
    11.             100 символов перед тем словом что я ищу и 200 после, притом разделяло по пробелам, чтобы слова не обрезало, и не искало в html коде
    12.             (типо <a href=\'www.test\' оно найдёт тогда слово test и выведет ссылку, но мне этого не надо...)... переменная $text = "результат,
    13.             тоетсь может быть большой текст"; переменная где задаётся искуемое слово это $_GET(\'show\')';
    14.  
    15. foreach (search_words($text, 'это', 2, 4) as $str)
    16.     echo $str."\n";
    17.  
    18. ?>
     
  6. AlexALX

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

    С нами с:
    13 июн 2007
    Сообщения:
    294
    Симпатии:
    5
    Адрес:
    Киев
    Спасибо! :D Только нашёл баг... если слово встречается более 1 раза то результат выводит 2 раза... ну вот что вышло:
    PHP:
    1.    foreach (search_words($text, 'это', 1, 1) as $str)
    2.        echo $str."\n";
    Код (Text):
    1. ... это для слово это $_GET('show')
    Впринцепе это и не баг, но щас попытаюсь немного изменить чтобы если слово встречается более 1 раза, то чтобы оно добавляло "...<br>..."
    СПС!
     
  7. AlexGousev

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

    С нами с:
    25 мар 2006
    Сообщения:
    1.505
    Симпатии:
    0
    Адрес:
    Москва
    Функция возвращает массив с найденными результатами… уж как его выводить — личное дело каждого