Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: оставить только таблицу
 
 автор: real   (27.10.2007 в 15:19)   письмо автору
 
 

здраствуйте.я бы хотел сграбить таблицу бомбардиров но у меня не получаеться.Помогите пожалуйста вот ссылка http://www.championat.ru/football/_spain/30/statistic/player/bombardir.html

   
 
 автор: EXP   (28.10.2007 в 02:15)   письмо автору
 
   для: real   (27.10.2007 в 15:19)
 

<?php
$file 
file_get_contents('http://www.championat.ru/football/_spain/30/statistic/player/bombardir.html');
preg_match("#<table width=100% cellpadding=4 cellspacing=1 class=tr_h>.*</table>#sU"$file$array);
echo 
$array[0] ;
?>
даже можно так

   
 
 автор: real   (28.10.2007 в 02:56)   письмо автору
 
   для: EXP   (28.10.2007 в 02:15)
 

EXP, большое тебе спасибо.Я знал что найдуться добрые люди...

а что приписать чтоб ссылки ссылки были как текст?пробовал вставить этот код не работает

$file = preg_replace("|<a[^>]+href=\"?'?([^ \"'>]+)\"?'?[^>]*>([^<>]*?)|is", "", $file);
$file = preg_replace("|</a>|", "", $file);

   
 
 автор: BaSh   (28.10.2007 в 15:06)   письмо автору
 
   для: real   (28.10.2007 в 02:56)
 


<?php
$file 
file_get_contents('http://www.championat.ru/football/_spain/30/statistic/player/bombardir.html');
preg_match("#<table width=100% cellpadding=4 cellspacing=1 class=tr_h>.*</table>#sU"$file$array);
$array[0] = preg_replace("!<a[\s+]href='(.+?)'[\s+]class=(.+?)[\s+]onfocus='(.+?)'>(.+?)</a>!i","\\4",$array[0]);
echo 
$array[0] ;
?> 

   
 
 автор: real   (28.10.2007 в 17:12)   письмо автору
 
   для: BaSh   (28.10.2007 в 15:06)
 

Спасиб Bash.все работает. можно ли оставить на таблице только первую десятку списка?

   
 
 автор: EXP   (28.10.2007 в 17:38)   письмо автору
 
   для: BaSh   (28.10.2007 в 15:06)
 

я-бы наверное даже сделал так
<?php
$file 
file_get_contents('http://www.championat.ru/football/_spain/30/statistic/player/bombardir.html');
echo 
$file preg_replace("#(.*)(<table width=100% cellpadding=4 cellspacing=1 class=tr_h>.+</table>)+(.*?)#esU",
    
"preg_replace(array('#\<a[^\>]+\>#s', '#\<\/a\>#s', '# background\=\'[^\']+\'#s'), '', '\$2')",
    
$file);
?>
что-бы получить конкретно массив имён , комманд , .... юзайте функцию preg_match_all() :)
// была ошибка , исправил

   
 
 автор: real   (28.10.2007 в 18:21)   письмо автору
 
   для: EXP   (28.10.2007 в 17:38)
 

так тоже работает.А слушай EXP, а если много таблиц на странице а мне нужна только та которую я хочу грабить например с сайта http://sport.niv.ru/view/vchem.pl?id=f_lch_1c&w=/football/league/champion.htm нужны 3 таблицы Турнирная таблица (на 25.10.2007),Результаты,Следующие игры,какое рег. выражение применить?Заранее спасибо

   
 
 автор: EXP   (28.10.2007 в 19:33)   письмо автору
 
   для: real   (28.10.2007 в 18:21)
 

Подобрать такое выражение что.бы получить в массив все три таблицы наверное , в коде страниц всегда бывают места которые отличают то что нужно выбрать от того что не нужно, только главное подобрать выражения , мне больше preg понравились , до сих пор не всё в них понимаю :)

   
 
 автор: real   (29.10.2007 в 12:25)   письмо автору
 
   для: EXP   (28.10.2007 в 19:33)
 

привет EXP,а как сделать так чтобы убрать границы в таблице?

   
 
 автор: EXP   (29.10.2007 в 22:06)   письмо автору
 
   для: real   (29.10.2007 в 12:25)
 

если имеется ввиду просто ненужны тэги </?table> , надо просто передвинуть скобки () захватывающей подмаски и тогда в $2 будет подвыражение без них , как в этом например
получение только массива с содержимым из этой таблицы (если она ещё не изменилась :) )

<?php
$file 
file_get_contents('http://www.championat.ru/football/_spain/30/statistic/player/bombardir.html');

 
$file =preg_replace("#(.*)<table width=100% cellpadding=4 cellspacing=1 class=tr_h>(.+)</table>+(.*?)#s",
    
'$2'$file) ;
preg_match_all("#(?:\>)([^\<\>]+)(?:\<)#"$file$out) ;
$out array_chunk $out[1], 6) ; 
print_r($out) ;
?>
тот сайт на Perl , который ты написал выше в этой теме возможно сам сграбливает это откуда-то,
ссылки подозрительные там, Ещё специально для новостей, например , бывают RSS-каналы,
с ними всё прощще , только я не пробовал даже никогда с ними что-то делать

   
 
 автор: real   (29.10.2007 в 22:39)   письмо автору
 
   для: EXP   (29.10.2007 в 22:06)
 

значит не как не получиться?сграбить?мда...

   
 
 автор: EXP   (30.10.2007 в 00:36)   письмо автору
 
   для: real   (29.10.2007 в 22:39)
 

Забыл добавить модификатор U в конце первого шаблона , исправлю по возможности.

Получится , но время работы скрипта будет на порядок больше.
Обратите внимание там в ссылках что.то типа ?var=/footbal/....
Проверьте может знаете тот сайт с такими путями с которого исходная инфа.
Из первоисточника будет быстрее получать инфу

// уже похоже не будет возможности исправить ;)

   
 
 автор: Ruskat   (05.11.2007 в 23:27)   письмо автору
 
   для: EXP   (30.10.2007 в 00:36)
 

Мужики, мож и мне поможете? Нужно отсюда: http://www.gismeteo.ua/towns/33464.htm Вырезать тока таблик с прогнозом в районе от "Погода в г. Белая Церковь " до "<<Подробно на сутки".

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования