За последние 24 часа нас посетили 20777 программистов и 1005 роботов. Сейчас ищут 860 программистов ...

Обрезка текста

Тема в разделе "PHP и базы данных", создана пользователем yomoto, 18 июн 2024.

  1. yomoto

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

    С нами с:
    19 мар 2019
    Сообщения:
    19
    Симпатии:
    0
    Добрый день.
    Подскажите, пожалуйста, в каком направлении читать/учить.


    Есть запрос к БД MySQL, который ищет слово по одной из колонок.
    Результат: в каждой строке много текста.

    Мне нужно сократить отображаемый текст влево и вправо от искомого слова по 200 символов

    Из доступного нашел только обрезание с начала/конца строки. А как обрезать из нужного места?

    Спасибо
     

    Вложения:

  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.839
    Симпатии:
    742
    Адрес:
    Татарстан
  3. yomoto

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

    С нами с:
    19 мар 2019
    Сообщения:
    19
    Симпатии:
    0
    Вот про нее я как раз и говорил, что ищет от начала и конца строки.
    Я так понимаю, что можно высчитать в какой позиции находится слово и о нее вычислять.
     
  4. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.839
    Симпатии:
    742
    Адрес:
    Татарстан
    она вообще не ищет, а вырезает
    Покажите свой запрос итоговый а не его результат....
    в общем случаем довольно сложно будет... так как нужно учесть моменты когда слово стоит первым или последним...
    тогда слева и справа по 200 не получится
     
  5. yomoto

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

    С нами с:
    19 мар 2019
    Сообщения:
    19
    Симпатии:
    0
    Спасибо, все получилось. Буду дошлифовывать: условие больше/меньше 200 символов по обе стороны, вывод целым словом …
    Пока так:
    Код (Text):
    1. $sql1 = "SELECT * FROM `eksd` WHERE `text` LIKE '%" . $word . "%' ORDER BY kod";
    2. $row2 = $db->select_list($dbh, $sql2);
    3. foreach($row2 as $r2) {
    4.  
    5.             $result11 = $r2['text'];
    6.             $pos = stripos($result11, $word);
    7.             $n_pos = $pos - 200;
    8.             $result12 = substr($result11, $n_pos, 400);
    9.            echo '<pre>';
    10.            print_r($result2);
     
  6. Vladimir Kheifets

    Vladimir Kheifets Новичок

    С нами с:
    23 сен 2023
    Сообщения:
    301
    Симпатии:
    59
    Адрес:
    Бавария, Германия
    Добрый день!
    Не понятно - "условие больше/меньше 200 символов по обе стороны, вывод целым словом …"
    Искомое слово будет целым, но в начале и в конце обрезанной строки слова будут наврядли целыми ...
    По идеи, нужно проверять $n_pos на < 0 и кол.во символов в $result11
    Удачи!
     
  7. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.778
    Симпатии:
    1.325
    Адрес:
    Лень