Форум программистов, компьютерный форум, киберфорум
PHP: RegExp
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
1 / 1 / 0
Регистрация: 10.04.2014
Сообщений: 32
1

Преобразование строки в массив уникальных слов

16.07.2014, 21:55. Показов 997. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Собственно хотелось сделать так
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
header('Content-Type:text/html; charset=utf-8');
$str = "Мой дом был построен
У меня появился отличный дом
Построен самый лучший дом";
$words = array_unique(preg_split('/\B\W+/', $str));
var_dump($words);
 
/*результат*/
array (size=6)
  0 => string 'Мой' (length=6)
  1 => string 'дом был' (length=13)
  2 => string 'построен
У меня появился отличный' (length=62)
  3 => string 'дом
Построен самый' (length=34)
  4 => string 'лучший' (length=12)
  5 => string 'дом' (length=6)
вместо того пришлось писать
PHP
1
$words = array_unique(preg_split('/[\s?:?,?.?;?(?)?!?\??]{1,}/', $str));
В строку могут напихать разных знаков а нужен массив именно слов(неповторяющихся) и без знаков.
пробовал и так
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$words = array_unique(preg_split('/[\W?\s?]{1,}/', $str));
/*так возвращает */
array (size=18)
  0 => string 'Мо�' (length=5)
  1 => string 'дом' (length=6)
  2 => string '�' (length=1)
  3 => string '�' (length=1)
  5 => string 'пос�' (length=7)
  6 => string 'роен' (length=8)
  7 => string 'У' (length=2)
  8 => string 'меня' (length=8)
  9 => string 'появи�' (length=11)
  10 => string 'ся' (length=4)
  11 => string 'о�' (length=3)
  13 => string 'и�' (length=3)
  14 => string 'н�' (length=3)
  17 => string 'Пос�' (length=7)
  19 => string 'с�' (length=3)
  20 => string 'м�' (length=3)
  23 => string 'у�' (length=3)
  25 => string 'и�' (length=3)



Прошу совета.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.07.2014, 21:55
Ответы с готовыми решениями:

Массив уникальных слов
Задание : Написать функцию, которая принимает строку в качестве аргумента и сохраняет уникальные...

Функция, получает строку слов и рзделителей, а на выходе имеет массив слов из строки и количество этих слов
мне нужна функция, которая во входе получает строку слов и рзделителей (" ", ",", ".", "_", """),...

Преобразование строки в список слов
создать предикат, преобразующий строку в список слов

Преобразование строки русского текста в список слов
Аналогичная задача для английского языка решается довольно просто Domains list=symbol* ...

3
Эксперт PHP
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
16.07.2014, 22:24 2
bighoc,
PHP
1
$words = array_unique(preg_split('/\W/u', $str));
0
1 / 1 / 0
Регистрация: 10.04.2014
Сообщений: 32
16.07.2014, 22:34  [ТС] 3
Или так -

PHP
1
2
preg_match_all('/\w+/u', $str, $words);
$words = array_unique($words[0]);
0
368 / 406 / 165
Регистрация: 29.05.2014
Сообщений: 1,494
16.07.2014, 22:38 4
У меня вышло так.
PHP
1
2
3
4
5
6
7
8
9
10
$str = "Мой мой дом ДОМ был?!''%; Hello World построен,
У меня появился отличный дом...
Построен самый лучший дом";
$str2=mb_strtolower($str,"UTF-8");
$pattern="/[^а-яa-z]/iu";
$text=preg_replace($pattern,' ',$str2);
$text2 =  preg_replace('/ {2,}/',' ',$text);
$text3=explode(" ", $text2);
$text4=array_unique($text3);
print_r($text4);
0
16.07.2014, 22:38
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.07.2014, 22:38
Помогаю со студенческими работами здесь

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

Преобразование строки в массив
Суть задачи состоит в том, что нужно строку, вводимую с клавиатуры превратить в массив. Например: у...

преобразование строки в массив
есть строка: $str = 'name'; как преобразовать её в массив вида: $arr = ...

Преобразование строки в массив
Нужно преобразовать строку в массив строк используя разделитель к примеру есть строка:...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru