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)
Покинул форум
Сообщений всего: 3
Дата рег-ции: Нояб. 2013
Помог: 0 раз(а)
Есть строка $text в кодировке UTF-8 и слова (массив) $array_of_words (в той же
кодировке). Необходимо с помощью квадратных скобок выделить первые вхождения каждого слова (то есть Мама заменить на [Мама]), при этом не учитывать регистр (выделять как вася так и ваСя).
Заменять нужно только целые слова а не подслова
Пример
$text = "Мама мыла раму утром, так как рама была грязная. Теперь
раму не узнать. Мама довольна.";
$array_of_words = array ("мама","раму","утро");
Ожидаемый результат
"[Мама] мыла [раму] утром, так как рама была грязная. Теперь
раму не узнать. Мама довольна."
Решением должна быть реализация функции, которая возвращает обработанную строку
function replaceWords($text, $array_of_words);
Дополнительные требования:
1) Хорошая читаемость кода
2) Оптимизация по быстродействию
3) Функция должна работать на любой конфигурации PHP и с любым текстом в UTF-8
В качестве упрощения можно предположить, что словом является любая последовательность символов, которая не содержит следующие символы:
пробел, табуляция, перевод строки, знаки препинания (.,!?-:;) и скобки (квадратные, круглые, фигурные).
esterio
Отправлено: 04 Ноября, 2013 - 15:45:36
Активный участник
Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012 Откуда: Украина, Львов
Помог: 127 раз(а)
Вам в раздел напишите за меня пожалуйста.
П.С. вопрос - это тестовое задание на работу
imya
Отправлено: 04 Ноября, 2013 - 15:45:56
Участник
Покинул форум
Сообщений всего: 1472
Дата рег-ции: Сент. 2012 Откуда: Запорожье, Украина
Когда нормальный человек, уезжая из дома одевает на жену пояс верности, веб-дизайнер ставит на нее счетчик...
IllusionMH
Отправлено: 04 Ноября, 2013 - 15:58:12
Активный участник
Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011 Откуда: .kh.ua
Помог: 242 раз(а)
wertuoz, выкладывайте ваши адекватные, но не совсем работающие решения, а тут уже подскажут как поправить.
С нуля писать за вас задание на работу/в универ/ в школу никто не будет.
esterio
Отправлено: 04 Ноября, 2013 - 16:05:26
Активный участник
Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012 Откуда: Украина, Львов
Помог: 127 раз(а)
в универе не смотрять на читаемость кода
вот ловите. должно быть что-то наподобии
Когда нормальный человек, уезжая из дома одевает на жену пояс верности, веб-дизайнер ставит на нее счетчик...
deblogger
Отправлено: 04 Ноября, 2013 - 18:49:22
Новичок
Покинул форум
Сообщений всего: 59
Дата рег-ции: Нояб. 2013
Помог: 0 раз(а)
[+]
Цитата:
$text = "Мама мыла раму утром, так как рама была грязная. Теперь
раму не узнать. Мама довольна.";
Составитель заданий явно не упарился оптимизацией кода, читаемостью и прочими выдвинутыми критериями но на русском языке. [cut]Отредактировано администратором: EuGen, 04 Ноября, 2013 - 18:56:00 Неоднократные неуважительные выпады и комментарии. Строгое предупреждение
wertuoz
Отправлено: 04 Ноября, 2013 - 20:34:15
Новичок
Покинул форум
Сообщений всего: 3
Дата рег-ции: Нояб. 2013
Помог: 0 раз(а)
esterio пишет:
в универе не смотрять на читаемость кода
вот ловите. должно быть что-то наподобии
Спасибо вам огромное!
все работает только возвращает
Мама мыла [раму] утром, так как рама была грязная. Теперь [раму] не узнать. [Мама] довольна.
почему то не меняет первое слово и выделяет все остальные ( (Добавление)
прогресс дошел до того что как и нужно заменяет только первое найденное слово из маски но почему то все ровно не хочет заменять первое слово Мама
то есть выводит: Мама мыла [раму] утром, так как рама была грязная. Теперь раму не узнать. [Мама] довольна.
П.С. если поставить в значении переменной $text перед Мама пробел то все работает может можно как то сделать по другому ??
esterio
Отправлено: 05 Ноября, 2013 - 09:59:08
Активный участник
Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012 Откуда: Украина, Львов
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.