Как да взема информацията от таблици?

sentenello

Registered
Здравейте,
Имам нещо от типа на
Код:
<div class="tablici">
<table>
<tr>
  <td>1</td>
  <td>1</td>
</tr>
<tr>
  <td>2</td>
  <td>2</td>
</tr>
</table>

<table>
<tr>
  <td>1</td>
  <td>1</td>
</tr>
<tr>
  <td>2</td>
  <td>2</td>
</tr>
<tr>
  <td>3</td>
  <td>3</td>
</tr>

</table>
</div>

Въпроса ми е какъв прег мач трябва да използвам за да взема кода и когато го изведа да изглежда така.

1 1
2 2

1 1
2 2
3 3
 
PHP:
$str =  "tablicata ti trqbwa da e tuk";
preg_match_all("/\<td\>(.+)\<\/td\>/iu", $str, $matches);
echo "<pre>". print_r($matches);
:?: :?:
 
joTunkiq каза:
PHP:
$str =  "tablicata ti trqbwa da e tuk";
preg_match_all("/\<td\>(.+)\<\/td\>/iu", $str, $matches);
echo "<pre>". print_r($matches);
:?: :?:
Това нещо извежда този текст:
Array
(
[0] => Array
(
[0] => <td>1</td>
[1] => <td>1</td>
[2] => <td>2</td>
[3] => <td>2</td>
[4] => <td>1</td>
// и т.н.
)

[1] => Array
(
[0] => 1
[1] => 1
[2] => 2
[3] => 2
[4] => 1
[5] => 1
/// и т.н.
)

)

Което не е целта :)

A това:
PHP:
preg_match_all("{<tr>.*?<td>(\d+)</td>.*?<td>(\d+)</td>.*?</tr>}s", $str, $matches);
array_shift($matches);
echo '<pre>';
foreach ($matches[0] as $key => $val)
	echo $matches[0][$key] . ' ' . $matches[1][$key] . "\n";
Извежда това:
Код:
1 1
2 2
1 1
2 2
3 3
:?:
 
тъй като там от където вземам информацията има доста таблици, а на мен ми трябва информацията само от таблиците който са в див-а с клас tablici... pregmatcha не трябва ли да е по друг начин ?
 
sentenello каза:
тъй като там от където вземам информацията има доста таблици, а на мен ми трябва информацията само от таблиците който са в див-а с клас tablici... pregmatcha не трябва ли да е по друг начин ?
http://simplehtmldom.sourceforge.net/

PHP:
$link = 'http://www.gаmеtracker.com/search/'.$type.'/BG/?searchipp=50&searchpge='.$_GET['page'].'';
$html = file_get_html($link);		
	foreach($ret = $html->find('td[class=c07],td[class=c07]') as $ret) {
		echo $ret->plaintext;
	}
Ето прост пример от един мой парсер
 
Код:
<table>
<tr class="osnoven">
  <td><a>1>/a></td>
  <td><a>1>/a></td>
</tr>
<tr class="vtorostepenen">
  <td>2</td>
  <td>2</td>
</tr>
<tr class="vtorostepenen">
  <td>2</td>
  <td>2</td>
</tr>



Код:
preg_match_all('/\<tr class=\"osnoven\"\>([\d\D]*?)\<\/tr\>/u',$html,$matches);

foreach($matches[0] as $futbol){
        preg_match('/\"\>(.*?)\<\/a\>/u',$futbol,$match);
        echo $match[1].'<br>';
}

С моя код вземам само
1 1

Какво ми трябва за да вземам и информацията от вторите <td>
 
Мисля че не мога да обясня като хората. Ще се опитам наново.

с
Код:
preg_match_all('/<table.*?>(.*?)<\/table>/si', $html, $matchess); 

print_r($matchess);
вземам всички таблици и всичко което ми трябва и изглежда ето така.


Как да направя всяка една информация да я вземам в отделна променлива, за да мога да я вкарам в БД примерно.
 
Това ли те интересува?
PHP:
preg_match_all('/<table.*?>(.*?)<\/table>/si', $html, $matches);
foreach($matches[0] as $futbol){
	preg_match_all('/\<td\>(.*?)\<\/td\>/u',$futbol,$match);
   print_r($match);
 echo '<br>';
}
 
би трябвало да стане по този начин но тъй като информацията се намира единия път в
<td><strong>asdas</strong></td>
един път в
<td><a>asdasdas</a></td>

и не ми извежда нищо
 
sentenello каза:
би трябвало да стане по този начин но тъй като информацията се намира единия път в
<td><strong>asdas</strong></td>
един път в
<td><a>asdasdas</a></td>

и не ми извежда нищо
А моя пример видя ли го?
 
sentenello каза:
би трябвало да стане по този начин но тъй като информацията се намира единия път в
<td><strong>asdas</strong></td>
един път в
<td><a>asdasdas</a></td>

и не ми извежда нищо
Яяяя ми драсни на лично линка от където ги сваляш тоест сайта от който ги взимаш защото не това е проблема което обясняваш. Вероятно ила таблуациии или нещо друго. Дори на лично да ми го пратиш няма проблем ще ги драсна регулярният израз. :)
 
sentenello каза:
@uphero твоя пример не можах да го разбера, как работи
Е как не разбра?
Дал съм и линк и пример?!?
Дай линк да видим какво искаш да вземеш.
 

Back
Горе