Парсинг

demko73
На сайте с 14.01.2009
Offline
52
658

Хелп .

есть код, в котором титл, пример

<html>

....
<title> Всего
25 человек</title>
....

Как выпарсить число из титла и ещё слово "человек" иногда заменяется на слово "людей", т.е. интересует различные варианты исхода при этих разных словах. И ещё такой вариант, что если никого не найдено, то число не выводится, то естественно и вариант исхода другой, с этим тоже проблемы. Хелп плз кто знает.

Лучше не бывает (http://porno-engine.ru)
dlyanachalas
На сайте с 15.09.2006
Offline
693
#1

if (preg_match("|<title>\s*[^\d]*(\d*)|i", $page, $match))

{
echo $match[1];
}
else
{
// другой вариант
}
demko73
На сайте с 14.01.2009
Offline
52
#2
dlyanachalas:
if (preg_match("|<title>\s*[^\d]*(\d*)|i", $page, $match))

{
echo $match[1];
}
else
{
// другой вариант
}

Спасибо, а на про вхождение в фразу различных слов, человек и людей, то есть это будет условие уже в регулярном выражении , не подскажете как с таким справиться, учитывая предыдущий код

ewg777
На сайте с 04.06.2007
Offline
225
#3

(человек|людей)

demko73
На сайте с 14.01.2009
Offline
52
#4

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


$text=implode(file('http://yandex.ru/yandsearch?pag=u&surl=bash.org.ru'));


if(strpos($text, "Яндекс:\nничего не найдено"))
{ $xc = 0; }
$begin = "<title>\n&nbsp;-\nЯндекс:\nнашл(.*)сь"; // от куда грабим
$end = " страниц"; // до куда грабим
$gd = eregi("$begin(.*)$end(.*)(\n</title>)", $text, $massiv);

$iyand =str_replace(' ', '', $massiv[2]);

$iyand1=ereg_replace("тыс.","000",$iyand);
$iyand2=ereg_replace("млн","000000",$iyand1);
echo iconv("UTF-8", "cp1251", $iyand2);

это выводит что-то вроде 63 000 , застрял на тупости , как убрать пробел между 3 и 0.

если смотрели код я приложи некоторые усилия к этому :

$iyand =str_replace(' ', '', $massiv[2]);

хелп плз

demko73 добавил 01.11.2009 в 00:26

Вобщем , кому интересно проблема решена.

правда ч/з 33 3,14зды ))

$iyand3=	trim(iconv("UTF-8", "cp1251", $iyand2));


$iyand4= rawurlencode($iyand3);
echo str_replace("%A0","", $iyand4);

только надо сделать соответствие переменных, с этим думаю можно разобраться.

Cheltap
На сайте с 27.11.2008
Offline
30
#5
demko73:
решил сделать парсилку только под яндекс...

$text=implode(file('http://yandex.ru/yandsearch?pag=u&surl=bash.org.ru'));

При отладке всевозможных парсилок лучше при каждом запуске

вместо обращения к яндексу просто читать из локального файла

сохранённую html-страницу.

Gmp
На сайте с 12.10.2008
Offline
83
Gmp
#6

$text=implode(file('http://yandex.ru/yandsearch?pag=u&surl=bash.org.ru'));

=

$text=file_get_contents('http://yandex.ru/yandsearch?pag=u&surl=bash.org.ru');

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий