Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: Программирование на PHP

  Все выпуски  

RusFAQ.ru: Программирование на PHP


Хостинг Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг на Windows 2008

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

Чемпионы рейтинга экспертов в этой рассылке

Сергей Луконин
Статус: Студент
Рейтинг: 106
∙ повысить рейтинг >>
Товарищ Бородин
Статус: Профессионал
Рейтинг: 86
∙ повысить рейтинг >>
Василий Сергеевич
Статус: 3-й класс
Рейтинг: 63
∙ повысить рейтинг >>

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / PHP

Выпуск № 1052
от 02.12.2008, 15:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 430, Экспертов: 44
В номере:Вопросов: 2, Ответов: 3

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>

Вопрос № 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 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!

    Оценка за ответ: 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 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!

    Оценка за ответ: 3
    Комментарий оценки:
    К сожалению функция strtolower не преобразует кирилиллицу...


    Вопрос № 151.988
    Добрый вечер!
    У нас в центре информационных технологий в этом году ввели php программирование.
    Установила Денвер. Но когда работаю с формой получается следующая ситуация:
    с формы данные передаются, в адресной строке другого файла эти данные можно посмотреть, НО не получается вывести значения этих переменных оператором ECHO. Это самый простой пример во всех книгах, но у меня не получается.
    Подскажите пожалуйста в чем причина. Я сделала листинг программы (один из различных вариантов) и фото экрана.
    С уважением Татьяна

    Приложение:

    Отправлен: 27.11.2008, 00:13
    Вопрос задала: Ларионова Татьяна вячеславовна (статус: Посетитель)
    Всего ответов: 1
    Мини-форум вопроса >>> (сообщений: 5)

    Отвечает: Товарищ Бородин
    Здравствуйте, Ларионова Татьяна вячеславовна!
    Здесь может быть несколько вариантов.
    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 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!

    Оценка за ответ: 5


    Вы имеете возможность оценить этот выпуск рассылки.
    Нам очень важно Ваше мнение!
    Оценить этот выпуск рассылки >>

    Отправить вопрос экспертам этой рассылки

    Приложение (если необходимо):

    * Код программы, выдержки из закона и т.п. дополнение к вопросу.
    Эта информация будет отображена в аналогичном окне как есть.

    Обратите внимание!
    Вопрос будет отправлен всем экспертам данной рассылки!

    Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
    экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


    Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
    Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров >>

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2008, Портал RusFAQ.ru, Россия, Москва.
    Авторское право: ООО "Мастер-Эксперт Про"
    Техподдержка портала, тел.: +7 (926) 535-23-31
    Хостинг: "Московский хостер"
    Поддержка: "Московский дизайнер"
    Авторские права | Реклама на портале

    ∙ Версия системы: 5.13 от 01.12.2008

    Яндекс Rambler's Top100
    RusFAQ.ru | MosHoster.ru | MosDesigner.ru
    RusIRC.ru | Kalashnikoff.ru | RadioLeader.ru

    В избранное