Форум программистов, компьютерный форум, киберфорум
Наши страницы

PHP

Войти
Регистрация
Восстановить пароль
 
 
Риназ
18 / 1 / 0
Регистрация: 16.06.2017
Сообщений: 314
#1

Как найти слово через цикл? - PHP

15.05.2018, 16:32. Просмотров 352. Ответов 43
Метки нет (Все метки)

Всем привет! Можно ли найти слово таким образом:
Например: Есть текст: Привет как дела? У меня хорошо, а у тебя как?
И слово: как
В данном случае в обеих предложениях есть слово как(т.е. всего 2).
Можно ли сделать условие, если их больше 1, то начать цикл, который берет первое слово с текста и ставит после слова "как". Если такое нету, то берет второе слово и т.д, пока не получится "как дела"?
Т.е. должно получится так: Как Привет(нет), как как(нет), как дела(есть).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.05.2018, 16:32
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Как найти слово через цикл? (PHP):

Как найти слово в тексте полученный через file_get_contents? - PHP
Всем привет! Есть сайт с большим кол-вом слов(не только слова, есть и ссылки и заголовки). Эти слова я получаю на свой сайт через...

Как сделать цикл для того, чтобы достать лишь 1 слово? - PHP
Всем привет! Есть текст. Из этого текста я достаю 1 предложение, потом разбиваю на слова и помещаю эти слова в массив. Вопрос: Как...

Как найти слово в тексте без учета регистра? - PHP
Всем привет! Как найти слово в тексте без учета регистра? Пробовал так: <? if(preg_match("/".$otvet."/i",$text)){ echo "Все...

Выводит div через цикл так, как не нужно - PHP
Всем привет. Впервые сталкиваюсь с созданием сайта, точнее его переформированием. Суть следующая: 1. пхп файлик коннектится к БД и...

Как передать выбранное слово через FORM - PHP
Это кусок из выпадающего списка Каким образом можно передать слово Чёрный через form? <option...

Как найти ключевое слово и вывести 5 строк от слова вниз - PHP
Как найти ключевое слово и вывести 5 строк от слова вниз? Есть файл с данными записанными каждое с новой строки. Нужно найти в файле...

43
worldown
162 / 160 / 70
Регистрация: 22.06.2009
Сообщений: 469
16.05.2018, 12:42 #16
Риназ, сравнить какое слово встречается чаще то и выводим? А если одинаковое кол-во раз встречается ?
0
Риназ
18 / 1 / 0
Регистрация: 16.06.2017
Сообщений: 314
16.05.2018, 12:46  [ТС] #17
Тогда вывести оба.
0
worldown
162 / 160 / 70
Регистрация: 22.06.2009
Сообщений: 469
16.05.2018, 14:25 #18
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<?php
// Example 1
$find  = "раз два три четыре пять";
$countWords = [];
$text = "я думаю часа два два будет два идти три дождь потом три часа светить солнце";
 
$findArr = explode(" ", $find);
$i = 0;
foreach($findArr as &$p){
    $countWords[$i] = 0;
    $pos = 0;
        
    while(true) {
        $pos = strpos($text, $p, $pos);
        if($pos !== false) {
            $countWords[$i]++;
            $pos++;
        } else {
            break;
        }
    }
    $i++;
    
};
 
function getMaxValue($arg) {
    $max = 0;
    foreach($arg as &$p) {
        if($max < $p) {
            $max = $p;
        }
    }
    return $max;
}
 
$maxVal = getMaxValue($countWords);
for($i = 0; $i < count($findArr); $i++) {
    if($countWords[$i] == $maxVal && $maxVal > 0 ) {
        echo "$findArr[$i] ";
    }
}
?>
0
sasha0012
76 / 76 / 42
Регистрация: 21.06.2012
Сообщений: 456
16.05.2018, 16:14 #19
Можно и так:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$find  = "раз два три четыре пять";
$findArr = explode(" ", $find);
$text = "я думаю часа два два будет два идти три дождь потом три часа светить солнце";
$textArr = explode(" ", $text);
$valuesArr = array_count_values($textArr);
$max=0;
$slovo="";
 
foreach($findArr as $value){
    if(isset($valuesArr[$value]) AND $valuesArr[$value]>$max){
        $max = $valuesArr[$value];
        $slovo = $value;
    }
};
 
echo $slovo;
Добавлено через 12 минут
Для повторяющихся слов:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$find  = "раз два три четыре пять";
$findArr = explode(" ", $find);
$text = "раз я думаю часа два два будет два идти три дождь потом три три часа светить солнце";
$textArr = explode(" ", $text);
$valuesArr = array_count_values($textArr);
$max=0;
 
foreach($findArr as $value){
    if(isset($valuesArr[$value]) AND $valuesArr[$value]>$max){
        $max = $valuesArr[$value];
    }
}
 
$key = array_keys($valuesArr, $max);
 
foreach($key as $value){
    echo $value."<br>";
}
0
Риназ
18 / 1 / 0
Регистрация: 16.06.2017
Сообщений: 314
16.05.2018, 19:40  [ТС] #20
worldown, sasha0012, А как подключить мой текст?
0
worldown
162 / 160 / 70
Регистрация: 22.06.2009
Сообщений: 469
17.05.2018, 12:07 #21
sasha0012, https://metanit.com/web/php/3.1.php
PHP
1
2
$find  = "раз два три четыре пять"; //переменная принимающая из формы слова для поиска
$text = "я думаю часа два два будет два идти три дождь потом три часа светить солнце"; // переменная принимающая из формы предложение в котором идет поиск
0
Риназ
18 / 1 / 0
Регистрация: 16.06.2017
Сообщений: 314
17.05.2018, 16:43  [ТС] #22
worldown, тогда другой вопрос. А где предложение, который ввел пользователь(Не слова, а предложение)?
Цитата Сообщение от Риназ Посмотреть сообщение
Есть 2 текстовых поля. На первое поле пользователь вводит слова(любые)
раз два три четыре пять
, а на второе предложение(любое)
Сегодня в четыре часа утра показывали кино
0
worldown
162 / 160 / 70
Регистрация: 22.06.2009
Сообщений: 469
17.05.2018, 18:52 #23
Риназ, я же выше все подписал, куда и что, и уроки на формы дал. Вы php\html знаете ?
0
Риназ
18 / 1 / 0
Регистрация: 16.06.2017
Сообщений: 314
17.05.2018, 19:12  [ТС] #24
Цитата Сообщение от worldown Посмотреть сообщение
я же выше все подписал
Там же только 2 строки. А с моим текстом должно быть 3 или вы как-то по другому сделали?
1) Слова пользователя
2) Предложение пользователя
3) Мои слова
0
worldown
162 / 160 / 70
Регистрация: 22.06.2009
Сообщений: 469
17.05.2018, 23:53 #25
Риназ, 39 строка, найденные слова хранятся в массиве:
PHP
1
$findArr
0
Риназ
18 / 1 / 0
Регистрация: 16.06.2017
Сообщений: 314
18.05.2018, 07:12  [ТС] #26
worldown, Нет, кажется вы меня не поняли. Я знаю, что слова хранятся в массиве. Данный код, который вы написали выше, он находит слова только с предложения:
я думаю часа два два будет два идти три дождь потом...
Ну это ладно, вместо предложения можно подключить мой текст. А если найденных слов будет больше 1, то надо по очереди поставить слова с предложения, который ввёл пользователь(не с моего текста, а с предложения пользователя), пока не получим нужный набор слов.
0
worldown
162 / 160 / 70
Регистрация: 22.06.2009
Сообщений: 469
18.05.2018, 10:23 #27
Риназ, вас очень тяжело понять. Посмотрите как излогают задачи:
Кликните здесь для просмотра всего текста
0
santaatnas
0 / 6 / 0
Регистрация: 10.04.2016
Сообщений: 65
18.05.2018, 10:47 #28
prey_match, классная функция)) православная, вам должна помочь))
0
Риназ
18 / 1 / 0
Регистрация: 16.06.2017
Сообщений: 314
Вчера, 08:02  [ТС] #29
worldown, сделал в виде рисунка. Я уже не знаю как объяснять))
Как найти слово через цикл?
0
sasha0012
76 / 76 / 42
Регистрация: 21.06.2012
Сообщений: 456
Вчера, 11:59 #30
В последнем "слайде", что означает совпадений не найдено? Я так понимаю на это утверждение как-то влияет первый поиск? То есть если мы нашли "три часа" то со вторым словом обязательное совпадение только со словом "часа"? Иначе почему не подходит совпадение "два два"?
0
Вчера, 11:59
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
Вчера, 11:59
Привет! Вот еще темы с ответами:

Как называется выражение <<<слово . слово; - PHP
Как эту запись правильно назвать? Оператором, конструкцией языка или ещё как? &lt;?php $a = &lt;&lt;&lt;qwertyuiop content... ...

Как распечатать всё из таблицы через DataTable через цикл - C#
Как распечатать всё из таблицы через DataTable? lb2.Text = row2.ToString(); Если так делать, то печатает запись под индексом 4. Мне...

Найти сумму через цикл - C++
Что здесь неправильно? #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;clocale&gt; #include &lt;math.h&gt; using namespace std; ...

Как в открытом текстовом файле найти слово и удалить строку которая содержит это слово? - C#
Как в открытом текстовом файле найти слово и удалить строку которая содержит это слово? C#


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

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru