Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Помогите пожалуйста) Слова в тексте разделены пробелами. Какие символы есть в каждом слове?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
NadyaSazhina
Отправлено: 05 Апреля, 2015 - 17:36:26
Post Id


Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Апр. 2015  


Помог: 0 раз(а)




помогите пожалуйста написать программу:Слова в тексте разделены пробелами. Какие символы есть в каждом слове?
я нашла как текст разделить на слова но я так понимаю нужно из текста создать многомерный массив и потом сравнивать элементы каждого слова. вот я не знаю как это сделать Растерялся
вот так текст делит на слова
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $string = 'Я какая то длинная фраза, со знаками препинания. Меня нужно разбить на слова!';
  4. $pattern = '~(\w+)~';
  5. preg_match_all($pattern, $string, $matches);
  6. print_r($matches[1]);
  7. ?>
  8.  

в результате получается так: Array ( [0] => Я [1] => какая [2] => то [3] => длинная [4] => фраза [5] => со [6] => знаками [7] => препинания [8] => Меня [9] => нужно [10] => разбить [11] => на [12] => слова )
нужно после этого из каждого слова сделать массив и после этого проверять на совпадение элементы массивов слов
 
 Top
Faraon-san
Отправлено: 05 Апреля, 2015 - 18:11:03
Post Id



Посетитель


Покинул форум
Сообщений всего: 318
Дата рег-ции: Сент. 2013  


Помог: 8 раз(а)




перечитал несколько раз, но так и не понял, что нужно...
 
 Top
Ts.Saltan
Отправлено: 05 Апреля, 2015 - 18:25:36
Post Id



Посетитель


Покинул форум
Сообщений всего: 384
Дата рег-ции: Дек. 2013  
Откуда: Belarus


Помог: 22 раз(а)




NadyaSazhina пишет:
каждого слова сделать массив

str_split (https://php.net/manual/ru/function.str-split.php )

NadyaSazhina пишет:
проверять на совпадение элементы массивов слов

На совпадение чего?
м.б. in_array поможет? (https://php.net/manual/ru/function.in-array.php )
 
 Top
NadyaSazhina
Отправлено: 05 Апреля, 2015 - 18:31:47
Post Id


Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Апр. 2015  


Помог: 0 раз(а)




Faraon-san пишет:
перечитал несколько раз, но так и не понял, что нужно...

нужно определить какие символы встречаются в каждом слове.

мне дана текстовая строка в которой слова разделены пробелами(любой текст):Я какая то длинная фраза, со знаками препинания. Меня нужно разбить на слова!

вот я создала массив из слов:
Array ( [0] => Я [1] => какая [2] => то [3] => длинная [4] => фраза [5] => со [6] => знаками [7] => препинания [8] => Меня [9] => нужно [10] => разбить [11] => на [12] => слова )

дальше мне нужно так:
Array ,от слова какая например, ( [0] => к [1] => а [2] => к [3] => а [4] =>я )

и так ко всем словам.

а потом сравнивать элементы массивов слов на совпадения и выводить буквы которые встречаются в каждом слове, если таких нет то выводить что таких нет.

я не знаю может я думаю не правильно и можно как то по другому сделать, но я не знаю как
 
 Top
Ts.Saltan
Отправлено: 05 Апреля, 2015 - 18:50:36
Post Id



Посетитель


Покинул форум
Сообщений всего: 384
Дата рег-ции: Дек. 2013  
Откуда: Belarus


Помог: 22 раз(а)




NadyaSazhina пишет:
Какие символы есть в каждом слове?

слова разбить на массивы, прогнать через функцию array_intersect

Вернёт массив символов, которые встречаются в каждом массиве

(Отредактировано автором: 05 Апреля, 2015 - 18:51:29)

 
 Top
NadyaSazhina
Отправлено: 05 Апреля, 2015 - 19:04:04
Post Id


Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Апр. 2015  


Помог: 0 раз(а)




Ts.Saltan пишет:
NadyaSazhina пишет:
Какие символы есть в каждом слове?

слова разбить на массивы, прогнать через функцию array_intersect

Вернёт массив символов, которые встречаются в каждом массиве


спасибо, это понятно.

но вот самое сложное это как разбить слова на массивы после того как создала массив и слов Однако
 
 Top
Ts.Saltan
Отправлено: 05 Апреля, 2015 - 19:07:33
Post Id



Посетитель


Покинул форум
Сообщений всего: 384
Дата рег-ции: Дек. 2013  
Откуда: Belarus


Помог: 22 раз(а)




NadyaSazhina пишет:
слова на массивы после того как создала массив и слов

Учите операторы и конструкции php https://php.net/manual/ru/langua...l-structures.php
В данной ситуации поможет foreach

PHP:
скопировать код в буфер обмена
  1. <? foreach($matches[1] as $word){
  2.   // Переберёт все слова. Тут, в цикле, работаем с переменной $word
  3. }

(Отредактировано автором: 05 Апреля, 2015 - 19:08:03)

 
 Top
NadyaSazhina
Отправлено: 05 Апреля, 2015 - 21:29:38
Post Id


Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Апр. 2015  


Помог: 0 раз(а)




Ts.Saltan пишет:
NadyaSazhina пишет:
слова на массивы после того как создала массив и слов

Учите операторы и конструкции php https://php.net/manual/ru/langua...l-structures.php
В данной ситуации поможет foreach

PHP:
скопировать код в буфер обмена
  1. <? foreach($matches[1] as $word){
  2.   // Переберёт все слова. Тут, в цикле, работаем с переменной $word
  3. }

спасибо большое
вот что у меня получилось:
PHP:
скопировать код в буфер обмена
  1. $pattern = '~(\w+)~';
  2. preg_match_all($pattern, $string, $matches);
  3. print_r($matches[1]);
  4. foreach($matches[1] as $word){
  5.   echo "<br> Значение: $word <br />\n";
  6.   $arr1 = str_split($word);
  7.    print_r($arr1);
  8. }
  9. ?>


Array ( [0] => Я [1] => какая [2] => то [3] => длинная [4] => фраза [5] => со [6] => знаками [7] => препинания [8] => Меня [9] => нужно [10] => разбить [11] => на [12] => слова )
Значение: Я
Array ( [0] => Я )
Значение: какая
Array ( [0] => к [1] => а [2] => к [3] => а [4] => я )
Значение: то
Array ( [0] => т [1] => о )
Значение: длинная
Array ( [0] => д [1] => л [2] => и [3] => н [4] => н [5] => а [6] => я )
Значение: фраза
Array ( [0] => ф [1] => р [2] => а [3] => з [4] => а )
Значение: со
Array ( [0] => с [1] => о )
Значение: знаками
Array ( [0] => з [1] => н [2] => а [3] => к [4] => а [5] => м [6] => и )
Значение: препинания
Array ( [0] => п [1] => р [2] => е [3] => п [4] => и [5] => н [6] => а [7] => н [8] => и [9] => я )
Значение: Меня
Array ( [0] => М [1] => е [2] => н [3] => я )
Значение: нужно
Array ( [0] => н [1] => у [2] => ж [3] => н [4] => о )
Значение: разбить
Array ( [0] => р [1] => а [2] => з [3] => б [4] => и [5] => т [6] => ь )
Значение: на
Array ( [0] => н [1] => а )
Значение: слова
Array ( [0] => с [1] => л [2] => о [3] => в [4] => а )


Теперь не знаю как сравнить эти массивы и найти повторяющееся значение ведь в функции array_intersect($word1, $word2, ... , $wordN); нужно задавать какие массивы сравнивать, а у меня же их может быть разное количество. я не знаю как это записать Слёзы в глазах
 
 Top
exlant
Отправлено: 06 Апреля, 2015 - 01:45:45
Post Id



Посетитель


Покинул форум
Сообщений всего: 425
Дата рег-ции: Февр. 2015  


Помог: 14 раз(а)




Я так и не понял, что нужно сделать и кого с чем сравнить?
Неужели нужно сравнить все слова друг с другом и найти буквы которые встречаются во всех словах???
 
 Top
Ts.Saltan
Отправлено: 07 Апреля, 2015 - 08:57:50
Post Id



Посетитель


Покинул форум
Сообщений всего: 384
Дата рег-ции: Дек. 2013  
Откуда: Belarus


Помог: 22 раз(а)




PHP:
скопировать код в буфер обмена
  1. <?
  2. $words = array();
  3. foreach($matches[1] as $word){
  4.   echo "<br> Значение: $word <br />\n";
  5.   $words[] = str_split($word);
  6. }
  7.  
  8. $result = call_user_func_array("array_intersect", $words);
  9. var_dump($result);
  10.  
 
 Top
LIME
Отправлено: 07 Апреля, 2015 - 09:20:25
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




можно ускорить в среднем если сначала указать самое короткое слово
поиск его будет быстрым так как длина строк хранится в php
и сразу даст короткий результирующий массив для сравнения с последующими словами
 
 Top
NadyaSazhina
Отправлено: 22 Апреля, 2015 - 20:02:10
Post Id


Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Апр. 2015  


Помог: 0 раз(а)




Ts.Saltan пишет:
PHP:
скопировать код в буфер обмена
  1. <?
  2. $words = array();
  3. foreach($matches[1] as $word){
  4.   echo "<br> Значение: $word <br />\n";
  5.   $words[] = str_split($word);
  6. }
  7.  
  8. $result = call_user_func_array("array_intersect", $words);
  9. var_dump($result);
  10.  

все равно не работает. я уже не знаю что делать Слёзы в глазах
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB