$page = file_get_contents($link);
preg_match("#пиво#u", $page, $arr);
Выше изложенное выдаёт пустой массив.
Если тоже самое сделать с обычной строкой и считывать с локального файла, то всё ОК.
Если необходимо, то прикладываю свой phpinfo().
Форум → Программирование → PHP для идиотов → Парсинг удалённого сайта. Проблема с кириллицей.
$page = file_get_contents($link);
preg_match("#пиво#u", $page, $arr);
26 февраля 2010 г. 22:14, спустя 42 минуты 33 секунды
Русские символы, если их задавать непосредственно в preg_match, не отображаются в результате.
26 февраля 2010 г. 22:45, спустя 31 минуту 14 секунд
<?php
$page = file_get_contents($link);
preg_match("#а#",$page,$arr);
print_r($arr);
?>
26 февраля 2010 г. 23:52, спустя 1 час 6 минут 36 секунд
27 февраля 2010 г. 0:47, спустя 55 минут 30 секунд
27 февраля 2010 г. 0:58, спустя 11 минут 8 секунд
<?php
setlocale(LC_CTYPE, "ru_RU.CP1251");
class parsing {
//получаем ссылки
function link() {
//URL страницы для парсинга
$url="http://mob.ua/phone/";
//массив, который будет возвращать функция
$links = array();
//счётчик для фильтрующего цикла
$j=0;
//Если на одной странице 30 товаров, то 100-й будет на 4-й. Парсим 4 страницы
for ($i=1; $i<=4; $i++) {
$page = file_get_contents($url."page_".$i);
preg_match_all('|<h2 class="phone_subtitle"><a href="(.*\.html)">|Uis',$page,$arr);
//приводим полученый массив ссылок в более приглядный вид, отсекая лишние элементы
for ($c=0; $c<30;$c++) {
$links[$j] = $arr[1][$c];
$j++;
if ($j>99) break;
}
}
return $links;
}
//получаем характеристики со страниц описания
function feature($link) {
$page = file_get_contents($link);
iconv("UTF-8","CP1251", $page);
//Получаем производителя и название модели
preg_match_all('|<title>(.+)\s(.+)\s-\s|Uis',$page, $arr);
$features[0] = $arr[1][0];
$features[1] = $arr[2][0];
//Получаем стандарт
preg_match('#GSM\s\(\d{3,4}.*\)|CDMA\s\(\d{3,4}.*\)#',$page, $arr);
$features[2] = $arr[0];
//Получаем инфу о наличии FM-радио
preg_match('#FM#',$page, $arr);
$features[3] = $arr[0];
//Получаем инфу о типе аккумулятора
preg_match('#Li-Ion.*\d{3,4}.*#', $page, $arr);
$features[4] = $arr[0];
//Получаем инфу о кол-ве цветов - Это у меня не получается
preg_match("#[а-яА-Я]{0,10}#", $page, $arr);
$features[5] = $arr[0];
return $features;
}
}
$parse = new parsing;
$params = $parse->feature('http://mob.ua/phone/nokia/nokia_5530_xpressmusic.html');
print_r ($params);
//$links = $parse->link();
?>
27 февраля 2010 г. 1:13, спустя 14 минут 4 секунды
27 февраля 2010 г. 1:20, спустя 7 минут 5 секунд
Array
(
[0] => Nokia
[1] => 5530 XpressMusic
[2] => GSM (900, 1800, 1900)
[3] => FM
[4] => Li-Ion аккумулятор 1000 мАч
[5] =>
)
27 февраля 2010 г. 1:23, спустя 3 минуты 23 секунды
27 февраля 2010 г. 1:28, спустя 4 минуты 33 секунды
это воспитание эдво, забей)
andrrr, ну тогда к чему топик, если все работает?
27 февраля 2010 г. 1:32, спустя 4 минуты 40 секунд
andrrr, ну тогда к чему топик, если все работает?
27 февраля 2010 г. 2:09, спустя 37 минут 10 секунд
// setlocale(LC_CTYPE, "ru_RU.CP1251"); закомментить
… поскипано …
function feature($link) {
$page = file_get_contents($link);
$page = iconv('windows-1251', 'utf-8', $page);
… поскипано …
// Вроде получается
preg_match('#Экран#', $page, $arr);
andrrr, ну тогда к чему топик, если все работает?
27 февраля 2010 г. 2:18, спустя 8 минут 43 секунды
27 февраля 2010 г. 2:37, спустя 19 минут 2 секунды
Пожалуйста, авторизуйтесь, чтобы написать комментарий!