Как вытащить html код с страницы

Статус
В этой теме нельзя размещать новые ответы.
PHP:
<?php
$re = '{
<table[^>]+\bclass\s*=\s*[\'"]?' . $classname . '\b["\']?[^>]*>
(?:
  [^<]++|
  (
    <table[^>]*>
    (?:
      [^<]++|
      (?1)|
      .
    )*?
    </table> 
  )|
  . 
)*?
</table\s*>
}xs';
preg_match($re, $html, $m);
$text = $m[0];
$text = preg_replace('{<img[^>]*>}', '', $text);
$text = preg_replace('{<a[^>]*>(.*?)</a\s*>}', '$1', $text);
echo $text;
 
PHP:
function get_table_by_class($url, $class_name)
{
	$html = file_get_contents($url);
	//$re = '{<table[^>]+\bclass\s*=\s*[\'"]?' . $class_name . '\b["\']?[^>]*>(.*?)</table\s*>}si';
	$re = '{
	<table[^>]+\bclass\s*=\s*[\'"]?' . $class_name . '\b["\']?[^>]*>
	(?:
	  [^<]++|
	  (
		<table[^>]*>
		(?:
		  [^<]++|
		  (?1)|
		  .
		)*?
		</table> 
	  )|
	  . 
	)*?
	</table\s*>
	}xs'; 
	preg_match($re, $html, $m); 
	$text = $m[1];
	$text = preg_replace('{<img[^>]*>}', '', $text);
	$text = preg_replace('{<a[^>]*>}', '', $text);
	$text = preg_replace('{</a[^>]*>}', '', $text);
	return $text;
}
Возвращает пустоту.:nezn:
----------------------------------------------------------
Если ссылка имеет вид:
HTML:
<a href="">
Текст
</a>
то это код:
PHP:
$text = preg_replace('{<a[^>]*>(.*?)</a\s*>}', '$1', $text);
не работает, его нужно изменить на:
PHP:
$text = preg_replace('{<a[^>]*>}', '', $text);
$text = preg_replace('{</a[^>]*>}', '', $text);
 
Не могу вытащить таблицу stealth group:
HTML:
<body>
<table width=100% class="stealth group">
<tr>
<td width=50% valign=top>
<div class="score_body">
	<table class="score">
	<tr><th>05.12.2009</th></tr>
	<tr><td class="white_block">
	<div class="simple_body_0pad bottom">
	<table width=100% class="score tdheight32">
	<tr>
		<td>
			<a href="/foreign/england/2009-2010/tour/15/">15-й тур</a>
			&nbsp;15:45
		</td>
	</tr>	
	<tr class="middle bold">
		<td>
			<a href="javascript:OpenWindow('/user/game.php?id=79513', 670, 600, 'yes')">
					Портсмут - Бернли 2 : 0
				</a>
		</td>
	</tr>
	<tr>
		<td>
			<a href="/player/2901/2009-2010/">Хрейдарссон&nbsp;Х.</a>, 65  (1:0).
				<a href="/player/3297/2009-2010/">Диндан&nbsp;А.</a>, 84  (2:0).
		</td>
	</tr>
	</table>
	</div>
	<div class="simple_body_0pad bottom">
	<table width=100% class="score tdheight32">
	<tr>
		<td>
			<a href="/foreign/england/2009-2010/tour/15/">15-й тур</a>
			&nbsp;18:00
		</td>
	</tr>	
	<tr class="middle bold">
		<td>
			<a href="javascript:OpenWindow('/user/game.php?id=79515', 670, 600, 'yes')">
					Уиган Атлетик - Бирмингем Сити 2 : 3
				</a>
		</td>
	</tr>
	<tr>
		<td>
			<a href="/player/2996/2009-2010/">Н`Зогбиа&nbsp;Ш.</a>, 33  (1:0).
				<a href="/player/6902/2009-2010/">Ларссон&nbsp;С.</a>, 61  (1:1).
				<a href="/player/9831/2009-2010/">Бенитес&nbsp;К.</a>, 66  (1:2).
				<a href="/player/6902/2009-2010/">Ларссон&nbsp;С.</a>, 72  (1:3).
				<a href="/player/13646/2009-2010/">Хорди Гомес&nbsp;Г-П.</a>, 89  (2:3).
		</td>
	</tr>
	</table>
	</div>
	<div class="simple_body_0pad bottom">
	<table width=100% class="score tdheight32">
	<tr>
		<td>
			<a href="/foreign/england/2009-2010/tour/15/">15-й тур</a>
			&nbsp;18:00
		</td>
	</tr>	
	<tr class="middle bold">
		<td>
			<a href="javascript:OpenWindow('/user/game.php?id=79516', 670, 600, 'yes')">
					Вулверхэмптон Уондерерс - Болтон Уондерерс 2 : 1
				</a>
		</td>
	</tr>
	<tr>
		<td>
			<a href="/player/24569/2009-2010/">Краддок&nbsp;Дж.</a>, 3  (1:0).
				<a href="/player/9968/2009-2010/">Милияш&nbsp;Н.</a>, 63  (2:0).
				<a href="/player/4855/2009-2010/">Эльмандер&nbsp;Ю.</a>, 79  (2:1).
		</td>
	</tr>
	</table>
	</div>
	<div class="simple_body_0pad bottom">
	<table width=100% class="score tdheight32">
	<tr>
		<td>
			<a href="/foreign/england/2009-2010/tour/15/">15-й тур</a>
			&nbsp;18:00
		</td>
	</tr>	
	<tr class="middle bold">
		<td>
			<a href="javascript:OpenWindow('/user/game.php?id=79514', 670, 600, 'yes')">
					Вест Хэм Юнайтед - Манчестер Юнайтед 0 : 4
				</a>
		</td>
	</tr>
	<tr>
		<td>
			<a href="/player/2288/2009-2010/">Скоулз&nbsp;П.</a>, 45+1  (0:1).
				<a href="/player/12666/2009-2010/">Гибсон&nbsp;Д.</a>, 61  (0:2).
				<a href="/player/2343/2009-2010/">Валенсия&nbsp;Л.</a>, 70  (0:3).
				<a href="/player/2292/2009-2010/">Руни&nbsp;У.</a>, 72  (0:4).
		</td>
	</tr>
	</table>
	</div>
	<div class="simple_body_0pad bottom">
	<table width=100% class="score tdheight32">
	<tr>
		<td>
			<a href="/foreign/england/2009-2010/tour/15/">15-й тур</a>
			&nbsp;18:00
		</td>
	</tr>	
	<tr class="middle bold">
		<td>
			<a href="javascript:OpenWindow('/user/game.php?id=79509', 670, 600, 'yes')">
					Блэкберн Роверс - Ливерпуль 0 : 0
				</a>
		</td>
	</tr>
	</table>
	</div>
	<div class="simple_body_0pad bottom">
	<table width=100% class="score tdheight32">
	<tr>
		<td>
			<a href="/foreign/england/2009-2010/tour/15/">15-й тур</a>
			&nbsp;18:00
		</td>
	</tr>	
	<tr class="middle bold">
		<td>
			<a href="javascript:OpenWindow('/user/game.php?id=79508', 670, 600, 'yes')">
					Астон Вилла - Халл Сити 3 : 0
				</a>
		</td>
	</tr>
	<tr>
		<td>
			<a href="/player/2814/2009-2010/">Данн&nbsp;Р.</a>, 13  (1:0).
				<a href="/player/5796/2009-2010/">Милнер&nbsp;Дж.</a>, 29  (2:0).
				<a href="/player/2090/2009-2010/">Карью&nbsp;Дж.</a>, 88 - с пенальти (3:0).
		</td>
	</tr>
	</table>
	</div>
	<div class="simple_body_0pad bottom">
	<table width=100% class="score tdheight32">
	<tr>
		<td>
			<a href="/foreign/england/2009-2010/tour/15/">15-й тур</a>
			&nbsp;18:00
		</td>
	</tr>	
	<tr class="middle bold">
		<td>
			<a href="javascript:OpenWindow('/user/game.php?id=79507', 670, 600, 'yes')">
					Арсенал - Стоук Сити 2 : 0
				</a>
		</td>
	</tr>
	<tr>
		<td>
			<a href="/player/256/2009-2010/">Аршавин&nbsp;А.</a>, 26  (1:0).
				<a href="/player/22295/2009-2010/">Рэмси&nbsp;А.</a>, 79  (2:0).
		</td>
	</tr>
	</table>
	</div>
	<div class="simple_body_0pad bottom">
	<table width=100% class="score tdheight32">
	<tr>
		<td>
			<a href="/foreign/england/2009-2010/tour/15/">15-й тур</a>
			&nbsp;20:30
		</td>
	</tr>	
	<tr class="middle bold">
		<td>
			<a href="javascript:OpenWindow('/user/game.php?id=79512', 670, 600, 'yes')">
					Манчестер Сити - Челси 2 : 1
				</a>
		</td>
	</tr>
	<tr>
		<td>
			<a href="/player/3187/2009-2010/">Адебайор&nbsp;Э.</a>, 8 - в свои ворота (0:1).
				<a href="/player/3187/2009-2010/">Адебайор&nbsp;Э.</a>, 37  (1:1).
				<a href="/player/8963/2009-2010/">Тевес&nbsp;К.</a>, 56  (2:1).
		</td>
	</tr>
	</table>
	</div>	
	</td>
	</tr>
	</table>
	</div>
<div class="score_body">
	<table class="score">
	<tr><th>06.12.2009</th></tr>
	<tr><td class="white_block">
	<div class="simple_body_0pad bottom">
	<table width=100% class="score tdheight32">
	<tr>
		<td>
			<a href="/foreign/england/2009-2010/tour/15/">15-й тур</a>
			&nbsp;18:00
		</td>
	</tr>	
	<tr class="middle bold">
		<td>
			<a href="javascript:OpenWindow('/user/game.php?id=79511', 670, 600, 'yes')">
					Фулхэм - Сандерленд 1 : 0
				</a>
		</td>
	</tr>
	<tr>
		<td>
			<a href="/player/3108/2009-2010/">Замора&nbsp;Б.</a>, 7  (1:0).
		</td>
	</tr>
	</table>
	</div>
	<div class="simple_body_0pad bottom">
	<table width=100% class="score tdheight32">
	<tr>
		<td>
			<a href="/foreign/england/2009-2010/tour/15/">15-й тур</a>
			&nbsp;19:00
		</td>
	</tr>	
	<tr class="middle bold">
		<td>
			<a href="javascript:OpenWindow('/user/game.php?id=79510', 670, 600, 'yes')">
					Эвертон - Тоттенхэм Хотспур 2 : 2
				</a>
		</td>
	</tr>
	<tr>
		<td>
			<a href="/player/2861/2009-2010/">Дефо&nbsp;Дж.</a>, 47  (0:1).
				<a href="/player/2840/2009-2010/">Доусон&nbsp;М.</a>, 59  (0:2).
				<a href="/player/2293/2009-2010/">Саа&nbsp;Л.</a>, 78  (1:2).
				<a href="/player/2746/2009-2010/">Кэйхилл&nbsp;Т.</a>, 86  (2:2).
		</td>
	</tr>
	</table>
	</div>	
	</td>
	</tr>
	</table>
	</div>
<div class="score_body">
	<table class="score">
	<tr><th>12.12.2009</th></tr>
	<tr><td class="white_block">
	<div class="simple_body_0pad bottom">
	<table width=100% class="score tdheight32">
	<tr>
		<td>
			<a href="/foreign/england/2009-2010/tour/16/">16-й тур</a>
			&nbsp;15:45
		</td>
	</tr>	
	<tr class="middle bold">
		<td>
			Стоук Сити - Уиган Атлетик	
		</td>
	</tr>
	</table>
	</div>
	<div class="simple_body_0pad bottom">
	<table width=100% class="score tdheight32">
	<tr>
		<td>
			<a href="/foreign/england/2009-2010/tour/16/">16-й тур</a>
			&nbsp;18:00
		</td>
	</tr>	
	<tr class="middle bold">
		<td>
			Болтон Уондерерс - Манчестер Сити	
		</td>
	</tr>
	</table>
	</div>
	<div class="simple_body_0pad bottom">
	<table width=100% class="score tdheight32">
	<tr>
		<td>
			<a href="/foreign/england/2009-2010/tour/16/">16-й тур</a>
			&nbsp;18:00
		</td>
	</tr>	
	<tr class="middle bold">
		<td>
			Бирмингем Сити - Вест Хэм Юнайтед	
		</td>
	</tr>
	</table>
	</div>
	<div class="simple_body_0pad bottom">
	<table width=100% class="score tdheight32">
	<tr>
		<td>
			<a href="/foreign/england/2009-2010/tour/16/">16-й тур</a>
			&nbsp;18:00
		</td>
	</tr>	
	<tr class="middle bold">
		<td>
			Тоттенхэм Хотспур - Вулверхэмптон Уондерерс	
		</td>
	</tr>
	</table>
	</div>
	<div class="simple_body_0pad bottom">
	<table width=100% class="score tdheight32">
	<tr>
		<td>
			<a href="/foreign/england/2009-2010/tour/16/">16-й тур</a>
			&nbsp;18:00
		</td>
	</tr>	
	<tr class="middle bold">
		<td>
			Бернли - Фулхэм	
		</td>
	</tr>
	</table>
	</div>
	<div class="simple_body_0pad bottom">
	<table width=100% class="score tdheight32">
	<tr>
		<td>
			<a href="/foreign/england/2009-2010/tour/16/">16-й тур</a>
			&nbsp;18:00
		</td>
	</tr>	
	<tr class="middle bold">
		<td>
			Челси - Эвертон	
		</td>
	</tr>
	</table>
	</div>
	<div class="simple_body_0pad bottom">
	<table width=100% class="score tdheight32">
	<tr>
		<td>
			<a href="/foreign/england/2009-2010/tour/16/">16-й тур</a>
			&nbsp;18:00
		</td>
	</tr>	
	<tr class="middle bold">
		<td>
			Сандерленд - Портсмут	
		</td>
	</tr>
	</table>
	</div>
	<div class="simple_body_0pad bottom">
	<table width=100% class="score tdheight32">
	<tr>
		<td>
			<a href="/foreign/england/2009-2010/tour/16/">16-й тур</a>
			&nbsp;18:00
		</td>
	</tr>	
	<tr class="middle bold">
		<td>
			Халл Сити - Блэкберн Роверс	
		</td>
	</tr>
	</table>
	</div>
	<div class="simple_body_0pad bottom">
	<table width=100% class="score tdheight32">
	<tr>
		<td>
			<a href="/foreign/england/2009-2010/tour/16/">16-й тур</a>
			&nbsp;20:30
		</td>
	</tr>	
	<tr class="middle bold">
		<td>
			Манчестер Юнайтед - Астон Вилла	
		</td>
	</tr>
	</table>
	</div>	
	</td>
	</tr>
	</table>
	</div>
<div class="score_body">
	<table class="score">
	<tr><th>13.12.2009</th></tr>
	<tr><td class="white_block">
	<div class="simple_body_0pad bottom">
	<table width=100% class="score tdheight32">
	<tr>
		<td>
			<a href="/foreign/england/2009-2010/tour/16/">16-й тур</a>
			&nbsp;19:00
		</td>
	</tr>	
	<tr class="middle bold">
		<td>
			Ливерпуль - Арсенал	
		</td>
	</tr>
	</table>
	</div>	
	</td>
	</tr>
	</table>
	</div>
</td>
<td width=50% valign=top>
<div class="score_body">
	<table class="score" width=100%>
	<tr>
		<th colspan="3">БОМБАРДИРЫ:</th>
	</tr>
	<tr>
		<td class="left">		
			Дефо Дж. 
		</td>
		<td class="left noborder_vertical">
			<a href="/foreign/england/2009-2010/teams/60/">Тоттенхэм Хотспур</a>				
		</td>
		<td class="noborder_vertical">
			 12 (0)
		</td>
	</tr>
	<tr>
		<td class="left">		
			Дрогба Д. 
		</td>
		<td class="left noborder_vertical">
			<a href="/foreign/england/2009-2010/teams/50/">Челси</a>				
		</td>
		<td class="noborder_vertical">
			 11 (0)
		</td>
	</tr>
	<tr>
		<td class="left">		
			Руни У. 
		</td>
		<td class="left noborder_vertical">
			<a href="/foreign/england/2009-2010/teams/54/">Манчестер Юнайтед</a>				
		</td>
		<td class="noborder_vertical">
			 11 (3)
		</td>
	</tr>
	<tr>
		<td class="left">		
			Фернандо Торрес  
		</td>
		<td class="left noborder_vertical">
			<a href="/foreign/england/2009-2010/teams/61/">Ливерпуль</a>				
		</td>
		<td class="noborder_vertical">
			 10 (0)
		</td>
	</tr>
	<tr>
		<td class="left">		
			Саа Л. 
		</td>
		<td class="left noborder_vertical">
			<a href="/foreign/england/2009-2010/teams/52/">Эвертон</a>				
		</td>
		<td class="noborder_vertical">
			 9 (1)
		</td>
	</tr>
	<tr>
		<td class="left">		
			Бент Д. 
		</td>
		<td class="left noborder_vertical">
			<a href="/foreign/england/2009-2010/teams/51/">Сандерленд</a>				
		</td>
		<td class="noborder_vertical">
			 9 (2)
		</td>
	</tr>
	<tr>
		<td class="left">		
			Агбонлахор Г. 
		</td>
		<td class="left noborder_vertical">
			<a href="/foreign/england/2009-2010/teams/47/">Астон Вилла</a>				
		</td>
		<td class="noborder_vertical">
			 7 (0)
		</td>
	</tr>
	<tr>
		<td class="left">		
			Ван Перси Р. 
		</td>
		<td class="left noborder_vertical">
			<a href="/foreign/england/2009-2010/teams/57/">Арсенал</a>				
		</td>
		<td class="noborder_vertical">
			 7 (0)
		</td>
	</tr>
	<tr>
		<td class="left">		
			Коул К. 
		</td>
		<td class="left noborder_vertical">
			<a href="/foreign/england/2009-2010/teams/46/">Вест Хэм Юнайтед</a>				
		</td>
		<td class="noborder_vertical">
			 7 (1)
		</td>
	</tr>
	<tr>
		<td class="left">		
			Адебайор Э. 
		</td>
		<td class="left noborder_vertical">
			<a href="/foreign/england/2009-2010/teams/55/">Манчестер Сити</a>				
		</td>
		<td class="noborder_vertical">
			 6 (0)
		</td>
	</tr>
	<tr>
		<td class="left">		
			Фабрегас Ф. 
		</td>
		<td class="left noborder_vertical">
			<a href="/foreign/england/2009-2010/teams/57/">Арсенал</a>				
		</td>
		<td class="noborder_vertical">
			 6 (0)
		</td>
	</tr>
	<tr>
		<td class="left">		
			Кин Р. 
		</td>
		<td class="left noborder_vertical">
			<a href="/foreign/england/2009-2010/teams/60/">Тоттенхэм Хотспур</a>				
		</td>
		<td class="noborder_vertical">
			 6 (1)
		</td>
	</tr>
	<tr>
		<td class="left">		
			Родальега У. 
		</td>
		<td class="left noborder_vertical">
			<a href="/foreign/england/2009-2010/teams/63/">Уиган Атлетик</a>				
		</td>
		<td class="noborder_vertical">
			 6 (1)
		</td>
	</tr>
	<tr>
		<td colspan="3" class="middle left">
			<a class="trngl" href="/foreign/england/2009-2010/statistics/bombardiers/">Подробнее</a>
		</td>
	</tr>
	<tr>
		<td colspan="3" class="fog">
			В скобках - количество голов с пенальти
		</td>
	</tr>
	</table>
	</div>
</td>
</tr>
</table>
</body>

менял $m[1]на $m[0] не помогает
 
Во первых, чтобы искать значение класса "как есть", не регуляркой, добавь:
PHP:
$class_name = '(?-x' . preg_quote($class_name) . ')';
А во вторых у тебя может быть баг PCRE. Если не работает с учетом первого, обнови PCRE.
 
PHP:
preg_match('{<table[^>]+\bclass\s*=\s*[\'"]?main\b["\']?[^>]*>(.*?)</table\s*>}si', $html, $m);
$text = $m[1];

Как изменить регулярку, чтоб вытаскивала таблицу из кода.
Весь тег со всеми атрибутами.
Таблица в коде одна:

HTML:
<html>
<body>
<table cellspacing=1 cellpadding=3 border=0 bgcolor="#c0bdd7" font style="font-size: 8pt" width="100%">
<tr><td></td></tr>
...
<tr><td></td></tr>
</table>
</body>
<html>
 
У меня след вариант норм отрабатывает. В $matches[0] - таблица.

PHP:
preg_match('/<table.*?>.*?<\/table>/si', $table, $matches );
 
PHP:
preg_match('{<table[^>]+\bclass\s*=\s*[\'"]?main\b["\']?[^>]*>(.*?)</table\s*>}si', $html, $m);
$text = $m[1];
Как изменить регулярку, чтоб вытаскивала таблицу из кода.
Весь тег со всеми атрибутами.
Таблица в коде одна:
HTML:
<html>
<body>
<table cellspacing=1 cellpadding=3 border=0 bgcolor="#c0bdd7" font style="font-size: 8pt" width="100%">
<tr><td></td></tr>
...
<tr><td></td></tr>
</table>
</body>
<html>
Уже было поправлено тут Для просмотра ссылки Войди или Зарегистрируйся. А вообще в $m[0] будет вся таблица в любом случае.

Добавлено через 9 минут
А, наверно имелось ввиду вытащить первую таблицу...
PHP:
<?php
preg_match('{<table[^>]+>.*?</table\s*>}si', $html, $m);
$text = $m[0];
$text = preg_replace('{<img[^>]*>}', '', $text);
$text = preg_replace('{<a[^>]*>(.*?)</a\s*>}', '$1', $text);
echo $text;
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху