Вопрос № 151934: Здравствуйте, подскажите пожалуйста... Имеется текст, нужно определить поличество вхождений слов, не зависимо от регистра. Слова загружаются из поля БД в массив. Там в одном поле просто перечисление:"Бензин масло АИ-93 кирпич цемент кукуруза&...
Вопрос № 151988: Добрый вечер! У нас в центре информационных технологий в этом году ввели php программирование. Установила Денвер. Но когда работаю с формой получается
следующая ситуация: с формы данные передаются, в адресной строке другого файла эти да...
Вопрос № 151.934
Здравствуйте, подскажите пожалуйста... Имеется текст, нужно определить поличество вхождений слов, не зависимо от регистра. Слова загружаются из поля БД в массив. Там в одном поле просто перечисление:"Бензин масло АИ-93 кирпич цемент кукуруза". На сервере не работает функция stripos. Скажите как сделать. Вариант в приложении работает, если савпадает регистр.
Приложение:
Отправлен: 26.11.2008, 18:07
Вопрос задал: Dolgicky (статус: 1-й класс)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Товарищ Бородин
Здравствуйте, Dolgicky! Я бы "ковырял" функции для работы с регулярными выражениями. Например, загружаем из базы данных слова, лепим их в регулярное выражение с помощью функции implode с разделителем "|", указываем за пределами паттерна модификаторы i и m, чем указываем на то, что хотим искать вхождения без учета регистра и что мы - за многострочный поиск То есть, выглядеть это должно примерно так:
//
пусть у нас есть массив слов $array - просто нумерованный список (что-то типа такого: array([0] => 'Бензин', [1] => 'Керосин', [2] => 'Мазут')). Будем считать, что именно его мы получили из базы данных $pattern = implode("|", $array);
$regexp = "/($pattern)/im";
// теперь п
ришла пора поискать наши слова в тексте // все найденные совпадения записываются в массив $pocket preg_match_all($regexp, $pattern, $pocket);
// а сейчас самое время посмотреть, что получилось. Распечатываем содержимое массива с помощью функции print_r и смотрим. print_r($pocket);
// в зависимости от результата решаете, что делать дальше
Распечатывание
массива - процедура, которую следует использовать на стадии отладки. В конечном приложении ее, конечно, следует отключить.
Затем следует посчитать вхождение каждого слова с помощью функции array_count_values. Если не получается, спрашивайте. Помогу, чем смогу :) С уважением, Товарищ Бородин
Ответ отправил: Товарищ Бородин (статус: Профессионал) Россия, Новосибирск Тел.: +7-923-245-3366 ICQ: 346988855 ---- Ответ отправлен: 26.11.2008, 18:20
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 236794 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Оценка за ответ: 5 Комментарий оценки: Здравствуйте, Товарищ Бородин! Большое спасибо за ответ на вопрос, но я с регулярными совсем слабо, и не смог разобраться, принцип понял, но как это реализовать, не знаю : Вообще мы имеем $text - это текст, который нужно определить к какой теме относится. В базе, для каждой темы есть набор слов "Бетон кирпич Доска мрамор" или "Мясо молоко сметана". Перебираем базу, набор
слов загоняем в массив $array, потом считаем количество вхождений каждого слова. В результате, в конце перебора, по максимальному кол. вхождений определяем тему текста. Подскажите пожалуйста....
Отвечает: Wsoul
Здравствуйте, Dolgicky! рекомендую вам воспользоваться функцией string strtolower(string str); для перевода символов всей строки в нижний регистр, а потом воспользоваться функцией int substr_count ( string $haystack , string $needle ), которая возвращает число вхождений подстроки needle в строку haystack .
Ответ отправил: Wsoul (статус: 1-й класс)
Ответ отправлен: 26.11.2008, 18:30
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 236795 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Оценка за ответ: 3 Комментарий оценки: К сожалению функция strtolower не преобразует кирилиллицу...
Вопрос № 151.988
Добрый вечер! У нас в центре информационных технологий в этом году ввели php программирование. Установила Денвер. Но когда работаю с формой получается следующая ситуация: с формы данные передаются, в адресной строке другого файла эти данные можно посмотреть, НО не получается вывести значения этих переменных оператором ECHO. Это самый простой пример во всех книгах, но у меня не получается. Подскажите пожалуйста в чем причина. Я сделала листинг программы (один из различных вариантов) и фото
экрана. С уважением Татьяна
Отвечает: Товарищ Бородин
Здравствуйте, Ларионова Татьяна вячеславовна! Здесь может быть несколько вариантов. 1) Вы используете короткие PHP-теги. Их использование опционально, подключается в php.ini. Мой Вам совет: не используйте короткие теги, используйте длинные, то есть <?php ... ?>. Это надежно работает. Кстати, обращаю Ваше внимание, что PHP-теги не требуют закрытия. Если в Вашем файле, кроме PHP-кода нет ничего(в т. ч. простого текста, который отображается, как есть), то скажем, разработчики популярной библиотеки
Zend Framework настоятельно советуют, не закрывать тег. Это так, к слову. 2) Вы используете метод GET. Это видно из кода, да и из того, что Вы говорите "в адресной строке"... Попробуйте вставить в какое-либо место Вашего файла(на который Вы отсылаете данные) такую нехитрую структуру:
print_r($_GET);
Ее, естественно, следует заключить в PHP-теги(длинные теги, напоминаю :)). 3) Файл, которому адресуются данные, не распознается как PHP-файл
. Возможно, Вы используете расширение .HTML. Используйте расширение .php.
4) Вы пытаетесь использовать глобальные переменные(опять-таки, это видно!), а их использование крайне нежелательно, и PHP по умолчанию директиву register_globals ставит в значение 0(off).
5) Самая простая программа - не та, что у Вас, а та, что в приложении. Вывод: невнимательно книжки читаете . Начните с нее. Это буквально самая знаменитая программа на всех языках
мира(в разном исполнении, разумеется). Главное - не переживайте. Все начинали с этого. Не запрягайте коня телегой. Сначала освойте типы переменных, присвоение, операции, а уж потом начинайте передавать данные. Увидите, Вам легче будет. PHP - язык крайне простой, и последовательное освоение на примерах Вас вывезет. Удачи! С уважением, Товарищ Бородин
PS Я склоняюсь к варианту №4. Скорее всего, в нем-то все и дело.
Редактирование
--------
∙ Отредактировал: deepTeNk, Академик
∙ Дата редактирования: 27.11.2008, 01:12 (время московское)
Приложение:
Ответ отправил: Товарищ Бородин (статус: Профессионал) Россия, Новосибирск Тел.: +7-923-245-3366 ICQ: 346988855 ---- Ответ отправлен: 27.11.2008, 00:32
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 236836 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Оценка за ответ: 5
Скажите "спасибо" эксперту, который помог Вам!
Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
на короткий номер 1151 (Россия)
Номер ответа и конкретный текст СМС указан внизу каждого ответа.
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.