Выдерание ХТМЛ кода при момощи PCRE

4ell

Новичок
Выдерание ХТМЛ кода при момощи PCRE

Читал мануал по ПЦРЕ, но не совсем понял как имнно выдрать кусок ХТМЛ кода и задать его в переменную, а потом из неё убрать не нужные вещи.
Поясню, есть таблица из которой мне надо выдать опред. данные, ну скажем строчку таблици где есть нужное мне имя, рейтинг и чки (рейтинг и очки меняются все время)... А потом задвть в одну переменную рейтинг, а во вторую очки...
Спасибо
 

Гравицапа

elbirret elcno
Re: Выдерание ХТМЛ кода при момощи PCRE

Автор оригинала: 4ell
Читал мануал по ПЦРЕ, но не совсем понял как имнно выдрать кусок ХТМЛ кода и задать его в переменную, а потом из неё убрать не нужные вещи.
например функцией preg_match_all()
Поясню, есть таблица из которой мне надо выдать опред. данные, ну скажем строчку таблици где есть нужное мне имя, рейтинг и чки (рейтинг и очки меняются все время)... А потом задвть в одну переменную рейтинг, а во вторую очки...
Спасибо
PHP FAQ: Регулярные выражения.
 

4ell

Новичок
Если правильно понял надо нписать так:
PHP:
<?php
$link = "http://runescape.ru/test/test.html"; 
$file = @fopen($link, "r"); 
if ($file) { 
	$show = fread($file, 200000); 
	fclose($file); 
	} else {
		preg_match("/(abc)/", $file, $show);
	}
        print $show[1];
?>
В фале test.html написано abc
но результат выполнения скрипта только "b" вместо "abc" :confused:
 

uchenik

Новичок
у тебя в условии указано выполнить preg_match() если не удастся открыть файл.

делай выводы
 

4ell

Новичок
Так с эти разобрался...

Но вот почемуто когда я пишу:
PHP:
preg_match("/^[a][b][c]([0-9]*)$/", $show, $stat);
И в документе в котором ищет написано
Код:
abc2
то все ок и он показывает "2"
А если искомая сторока не первая, а до неё уже есть строки
вот так:
Код:
as
abc2
то он ничего уже не показывает
 

4ell

Новичок
то я читал понял уже эту фишку. Вот теперь другая проблема. Почемуто он не всегда находит на стр. то, что нужно. Тоесть есть страница я начиная в ней искать одно слово, и скрипт его не находит, хотя другое слово 2-мя сирочками выше находит, но ведь оба слова должен находить они там есть 100% я ихи сам видел в коде страници.

-~{}~ 26.08.05 21:26:

Короче это странный глюк сервера. На денвере все прекрасно работает и показывает все, что надо... А на сервере идентичный РХР код не работает, хоть убейся.

-~{}~ 26.08.05 21:49:

Вот всетаки не понимаю. Почему на сервере код:
PHP:
<?php
//GET HISCORES START
//
$url = "http://hiscore-web.runescape.com/aff/runescape/hiscorepersonal.cgi?username=4ell"; 
$file = @fopen($url, "r"); 
if ($file) { 
	$show = fread($file, 10400000);
	fclose($file);
	} else {
		print "&#205;&#229; &#239;&#238;&#235;&#243;&#247;&#224;&#229;&#242;&#241;&#255; &#239;&#238;&#228;&#234;&#235;&#254;&#247;&#232;&#242;&#252;&#241;&#255; &#234; " . $url;
	}
//
//GET HISCORES END

//SEARCH STATS IN HISCORES START
//$search = '/(<td><a href=\"hiscoreuser.cgi?username=4ell&category=1\" class=c>Attack<\/a><\/td>)/';

preg_match("/(Attack)<\/a><\/td>[\s]*<td align=\"right\">([0-9]+)[^\s]([0-9]+)/", $show, $stat);
//
//SEARCH STATS IN HISCORES END

//SHOW STATS START
//
print $stat[1] . ":" . $stat[2] . $stat[3];
//
//SHOW STATS END

?>
Выводит на экран только ":"
А на денвере тотже код вывдит то, что надо "Attack:38667"
Почему так?
 

Anarki

Новичок
А ты научись нормально читать файлы, ибо ты считываешь стили,а до контента самой страницы не доходишь.
Кривая строка
PHP:
$show = fread($file, 10400000);
Есть замечательная функция
PHP:
file_get_contents
, вот её используй(www.php.net/file_get_contents)

Либо, если хостер уж совсем её не воспринимает, то исправляй свою кривую строку.
http://us3.php.net/manual/en/ref.filesystem.php

-~{}~ 27.08.05 15:11:

PHP:
$show = file_get_contents($url);
 

4ell

Новичок
Anarki, спасибо, функция
PHP:
file_get_contents($url)
, на сервера работает как надо...
Только я всеже не понимаю, почему это:
PHP:
$file = @fopen($url, "r"); 
if ($file) { 
    $show = fread($file, 10400000); 
    fclose($file); 
    }
На данвере работало, а на сервере, нет?
 
Сверху