Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.07.2011, 12:54   #1
Che Guevara
Пользователь
 
Аватар для Che Guevara
 
Регистрация: 27.07.2010
Сообщений: 91
Злость Парсинг HTML

Здрасьте!

Очередная трабла с парсингом страницы. Точнее, с поиском русского (кирилического) слова в тексте страницы. Мой код:
PHP код:
<?php
$text
=file_get_contents("http://php.su/functions/?preg_match");
$target="Выполняет";
header('Content-Type: text/html; charset=windows-1251');
if (
preg_match("/\b$target\b/i"$text)) 
{
echo 
"Вы запрашивали: <strong>".$target."</strong><br>";
echo 
"Результат успешный!";
}   
else {
echo 
"Вы запрашивали: <strong>".$target."</strong><br>";
echo 
"Результат безуспешный...";
}
?>
В чём проблема, как найти рандомное слово на кирилице? (с латинскими словами проблем нет)
Che Guevara вне форума Ответить с цитированием
Старый 21.07.2011, 13:44   #2
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

У меня ваш код нормально отрабатывает - без проблем находит любое слово или сочетание слов на кириллице.

НО - это когда сам документ с кодом сохранен как ANSI.
После пересохранения его в UTF-8 - скрипт перестал находить совпадения.

Вероятно, по причине разницы в кодировках,
потому что вот это исправило ситуацию с поиском совпадений (но не с отображением результатов проверки ):
PHP код:
$target iconv("UTF-8""Windows-1251""Выполняет"); 
Andkorol вне форума Ответить с цитированием
Старый 21.07.2011, 14:27   #3
Che Guevara
Пользователь
 
Аватар для Che Guevara
 
Регистрация: 27.07.2010
Сообщений: 91
По умолчанию

Цитата:
но не с отображением результатов проверки
Спасибо. Доработал Вашу идею и получилось так:
PHP код:
<?php
header
('Content-Type: text/html; charset=windows-1251');
$text=file_get_contents("http://bank.uz/currency/cb.html");
$aim="sdf4";
$target iconv("UTF-8""Windows-1251"$aim); 
if (
preg_match("/\b$target\b/i"$text$matches)) 
{
$target iconv("Windows-1251""Windows-1251"$aim); 
echo 
"Вы запрашивали: <strong>".$target."</strong><br>";
echo 
"Результат успешный!";
}   
else {
$target iconv("Windows-1251""Windows-1251"$aim); 
echo 
"Вы запрашивали: <strong>".$target."</strong><br>";
echo 
"Результат безуспешный...";
}
?>
Che Guevara вне форума Ответить с цитированием
Старый 21.07.2011, 14:49   #4
Che Guevara
Пользователь
 
Аватар для Che Guevara
 
Регистрация: 27.07.2010
Сообщений: 91
По умолчанию

По "идее" осуществления парсинга теперь нужно вырезать фрагмент кода от найденного слова до определённого тега. В моём случае:
Код HTML:
доллар США</strong>

</td>
<td align="right" style="border-bottom:1px dashed #ccc">
<strong>1722.4</strong>
</td>
<td align="right" style="border-bottom:1px dashed #ccc;color:green">
это слово "color";
Вопрос - какой ф-ции по-силам осуществить эту операцию?
Che Guevara вне форума Ответить с цитированием
Старый 21.07.2011, 19:28   #5
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

Ответ:
Код:
explode("color",...)
Берем затем 0-й элемент полученного массива
motorway вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Парсинг HTML russian-stalker Общие вопросы C/C++ 0 18.12.2010 11:25
Парсинг html кода LT. Общие вопросы .NET 2 01.07.2010 07:30
парсинг Html eldar Общие вопросы Delphi 4 23.04.2009 20:42
Парсинг HTML страницы OkeaH Работа с сетью в Delphi 1 19.01.2009 09:17
HTML Парсинг BaikalLord Помощь студентам 5 15.12.2008 08:20