Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 25.06.2011
Сообщений: 100

Выбрать из массива по заданному слову

15.01.2017, 17:33. Показов 2112. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
1. массив в нем в каждой ячейке одно или несколько предложений
2. массив в нем по одному слову в ячейке

необходимо из массива1 выбрать те ячейки в которых содержится любое из слов из массива2

спасибо
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.01.2017, 17:33
Ответы с готовыми решениями:

Выход из консоли по заданному слову
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { ...

Образуйте по заданному слову слово-перевёртыш
Образовать по заданному слову слово перевёртыш, в котором все буквы идут в обратном порядке.

Поиск строки в файле по заданному слову
Ребят,подскажите. У меня создан текстовый файл,в котором 5 строк,каждая строка это новая книга,а именно автор,название,издатель,год...

16
Эксперт PHP
3900 / 3238 / 1353
Регистрация: 01.08.2012
Сообщений: 10,914
15.01.2017, 17:41
Лучший ответ Сообщение было отмечено trest как решение

Решение

Цитата Сообщение от trest Посмотреть сообщение
а как можно выбрать те предложения в которых есть нужные слова.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$text = 'Первое предложение. Второе предложение. Третье. Конец. Слово.';
$words = array('предложение', 'слово');
$result = array();
 
$strings = explode('.', $text);
 
foreach($strings as $str)
{
    foreach($words as $word)
    {
        if(mb_stripos($str, $word) !== false)
        {
            $result[] = $str;
            break;
        }
    }
}
 
foreach($result as $v)
    echo $v . '<br>';
1
 Аватар для fanatikus
1932 / 1523 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
15.01.2017, 17:55
Цитата Сообщение от Jodah Посмотреть сообщение
foreach(explode(' ', $text) as $v)
а если есть знаки препинания?
слово != слово,
0
Эксперт PHP
3900 / 3238 / 1353
Регистрация: 01.08.2012
Сообщений: 10,914
15.01.2017, 17:58
fanatikus, убить их
PHP
1
$text = str_replace(',', '', $text);
0
 Аватар для fanatikus
1932 / 1523 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
15.01.2017, 18:03
Цитата Сообщение от Jodah Посмотреть сообщение
убить их
это понятно, я т.с намекнул
0
0 / 0 / 0
Регистрация: 25.06.2011
Сообщений: 100
15.01.2017, 18:15  [ТС]
а если у меня слова не в массиве а в переменной через пробел? правильно исправил?
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$result = array();
$strings = explode('|', $text);
$words =  explode(' ', $word);
 
foreach($strings as $str)
{
    foreach($words as $word)
    {
        if(mb_stripos($str, $word) !== false)
        {
            $result[] = $str;
            break;
        }
    }
}
 
foreach($result as $v)
    echo $v . '<br>';
0
Эксперт PHP
3900 / 3238 / 1353
Регистрация: 01.08.2012
Сообщений: 10,914
15.01.2017, 18:18
Цитата Сообщение от trest Посмотреть сообщение
а если у меня слова не в массиве а в переменной через пробел?
2-ую строку в моём коде заменить на:
PHP
1
$words = explode(' ', 'здесь пишем слова через пробел');
0
0 / 0 / 0
Регистрация: 25.06.2011
Сообщений: 100
15.01.2017, 18:21  [ТС]
Цитата Сообщение от Jodah Посмотреть сообщение
2-ую строку в моём коде заменить на:
выше указал как исправил, смысл тот же

вылазиет мне Empty delimiter на строке
PHP
1
if(mb_stripos($str, $word) !== false)
0
Эксперт PHP
3900 / 3238 / 1353
Регистрация: 01.08.2012
Сообщений: 10,914
15.01.2017, 21:04
Цитата Сообщение от trest Посмотреть сообщение
выше указал как исправил, смысл тот же
Не тот же, если брать ваш код, будет несколько ошибок.
Цитата Сообщение от trest Посмотреть сообщение
вылазиет мне Empty delimiter на строке
Покажите полный код в его нынешнем виде и полный текст ошибки.
0
0 / 0 / 0
Регистрация: 25.06.2011
Сообщений: 100
15.01.2017, 21:31  [ТС]
Цитата Сообщение от Jodah Посмотреть сообщение
Покажите полный код в его нынешнем виде и полный текст ошибки.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$strings = explode('|', $valueq);
$words =  explode(' ', $kk);
$result = array();
 
 
foreach($strings as $str)
{
    foreach($words as $word)
    {
        if(mb_stripos($str, $word) !== false)
        {
            $result[] = $str;
            break;
        }
    }
}
 
foreach($result as $v)
    echo $v . '<br><br>';
Warning: mb_stripos(): Empty delimiter in H:\OpenServer\domains\moi.ru\1.php on line 152
0
Эксперт PHP
3900 / 3238 / 1353
Регистрация: 01.08.2012
Сообщений: 10,914
15.01.2017, 21:36
trest, а в $kk что?
Цитата Сообщение от trest Посмотреть сообщение
Empty delimiter
В $word пусто.
0
0 / 0 / 0
Регистрация: 25.06.2011
Сообщений: 100
15.01.2017, 21:48  [ТС]
Цитата Сообщение от Jodah Посмотреть сообщение
В $word пусто.
если смотрю так echo $words[0];
то вроде не пустая.

или я вас не правильно понял?
0
Эксперт PHP
3900 / 3238 / 1353
Регистрация: 01.08.2012
Сообщений: 10,914
15.01.2017, 22:12
trest, правильно. Но надо проверить, что не пусто во всех элементах массива $words.
0
0 / 0 / 0
Регистрация: 25.06.2011
Сообщений: 100
16.01.2017, 22:12  [ТС]
Цитата Сообщение от Jodah Посмотреть сообщение
правильно. Но надо проверить, что не пусто во всех элементах массива $words.
с этим разобрался, сделал так
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$strings = explode('|', $valueq);
$words =  $kk;
$result = array();
 
 
 
 
 
foreach($strings as $str)
{
    foreach($words as $word)
    {
        if(mb_stripos($str, $word) !== false)
        {
            $result[] = $str;
            break;
        }
    }
}
 
foreach($result as $v)
    echo $v . '<br><br>';
работает без ошибок

спасибо!!!

Добавлено через 9 часов 57 минут
делает не совсем то что мне надо(
выбирает все предложения даже с однокоренными словами
а мне нужно чтобы точное слово смотрел..
можно такое сделать?

Добавлено через 13 часов 42 минуты
пробовал заменить
PHP
1
if(mb_stripos($str, $word) !== false)
на
PHP
1
if(preg_match_all("~\b$word\b~i", $str) !== false);
не сработало(

подскажите как правильно сделать
0
Эксперт PHP
3900 / 3238 / 1353
Регистрация: 01.08.2012
Сообщений: 10,914
16.01.2017, 22:45
Лучший ответ Сообщение было отмечено trest как решение

Решение

Цитата Сообщение от trest Посмотреть сообщение
даже с однокоренными словами
Всмысле ищете "слов", а находит "слово", "слова" и т.п.?

Можно так.

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$text = 'Первая фраза. Несколько фраз.';
$words = array('фраз');
$result = array();
 
$strings = explode('.', $text);
 
foreach($strings as $str)
{
    $str_words = explode(' ', $str);
 
    foreach($words as $word)
    {
        if(in_array($word, $str_words, true))
        {
            $result[] = $str;
            break;
        }
    }
}
 
foreach($result as $v)
    echo $v . '<br>';
1
0 / 0 / 0
Регистрация: 25.06.2011
Сообщений: 100
16.01.2017, 22:57  [ТС]
Цитата Сообщение от Jodah Посмотреть сообщение
Всмысле ищете "слов", а находит "слово", "слова" и т.п.?
Можно так.
да, искал однокоренные.
этот код делает все как надо)

огромное спасибо!!!!
0
0 / 0 / 0
Регистрация: 25.06.2011
Сообщений: 100
07.02.2017, 23:22  [ТС]
Что-то совсем голова не варит(
Теперь решил сделать наоборот
Есть два массива, в первом в каждой ячейке предложения, во втором слово или символ.
Надо чтобы из первого массива удалялись ячейки если в них присутствует любое из второго (можно даже если однокоренное слово)
пробовал так
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$nnn =  file_get_contents('nnn.txt');
$nnn = explode('|', $nnn);
$reso = array();
 
foreach($result as $res)
{
    foreach($nnn as $nn)
    {
        if(mb_stripos($nn, $res) !== false)
        {
            $reso[] = $nn;
            break;
        }
    }
}
 
foreach($reso as $res)
    echo $res . '<br><br>';
echo count($res);
вообще ничего не выводит. и ошибок не дает.
помогите пожалуйста)

Добавлено через 44 минуты
ошибся выше, отредактировать не могу
в общем код
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$nnn = file_get_contents('nnn.txt');
$nnn = explode('|', $nnn);
$opnnn = array();
 
 
foreach($result as $res)
{
    $str_res = explode(' ', $res);
 
    foreach($nnn as $nn)
    {
        if(in_array($nn, $str_res, true))
 
        {
            $opnnn[] = $res;
            break;
        }
    }
}
foreach($opnnn as $opnn)
    echo $opnn . '<br><br>';
echo count($opnnn);
выбирает из первого массива если есть совпадение с вторым массивом, а мне надо наоборот
пробовал сделать
PHP
1
if(in_array($nn, $str_res, false))
не прошло

Добавлено через 25 минут
не знаю насколько правильно но пока вышел из положения вот так
PHP
1
2
3
$opnnn=array_diff($result,$opnnn);
foreach($opnnn as $opnn)
    echo $opnn . '<br><br>';
может есть лучшие варианты?
и так ищет слово в слово, а мне нужно чтобы даже однокоренные удалял

Добавлено через 47 минут
вроде сделал))) теперь находит однокоренные тоже.
вот финальный результат
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$nnn = file_get_contents('nnn.txt');
$nnn = explode('|', $nnn);
$opnnn = array();
 
 
foreach($result as $res)
{
    foreach($nnn as $nn)
    {
        if(mb_stripos($res, $nn) !== false)
        {
            $opnnn[] = $res;
            break;
        }
    }
}
$opnnn=array_diff($result,$opnnn); 
foreach($opnnn as $v)
    echo $v . '<br><br>';   
echo count($opnnn);
интересно может есть более оптимальный вариант?

еще раз спасибо Jodah по сути ковыряю тот кусок что Вы предложили
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.02.2017, 23:22
Помогаю со студенческими работами здесь

Совершить поиск по заданному слову или фрагменту текста
Всем доброго времени суток. Ближе к делу: есть объект QLineEdit, в которой вписывается слово, есть QTextEdit, где собственно надо найти...

Отобрать те текстовые значения, которые не равны заданному слову
Подскажите, пожалуйста, как написать условие для расширенного фильтра, если необходимо отобрать те текстовые значения, которые НЕ РАВНЫ ,...

Удаление по заданному слову/символу строки из текстовых файлов
Есть 50 текстовых файлов, необходимо у всех удалить первые 4 строки, это шапки реестров начинаются эти строки с &quot;#&quot;. Нашел на...

Удаление по заданному слову строки из текстового файла с помощью цикла FOR
как через for удалить строку из txt файла? например вводим имя файла, то что нужно удалить и далее удаляется строка содержащая то что мы...

Найти в предложение все слова, идентичные заданному слову Word
Помогите пожалуйста решить задачку по паскалю дано предложение, состоящее из слов, составленных различными символами. Символ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru