Autor Zpráva
moldow
Profil *
Zdravim, viem ze prvy riadok z tohoto zapisu je nespravny, ale ako ho mam zapisat tak, aby to fungovalo?

foreach($html->find('a') as $e) and ($html->find('td') as $ef)
echo '<a href=http://domena.com/' . $e->href . '>' . $ef->innertext .'</a><br>';

Dakujem.
Tori
Profil
Chcete paralelně procházet dvě různá pole?
moldow
Profil *
ano
Tori
Profil
Šlo by to přes pomocné proměnné:
$odkazy = $html->find('a');
$bunky = $html->find('td');
for ($i = 0, $cnt = min(count($odkazy), count($bunky)); $i < $cnt; $i++) {
    echo '<a href="http://domena.com' . $odkazy[$i]->href . '>' . $bunky[$i]->innertext . '</a><br>';
}

Případně, kdyby metoda find vracela přímo řetězce, tak se dá použít i něco takového:
foreach (array_combine($html->find('a:href'), $html->find('td:innertext')) as $url => $td) {
  ....
}
Ale tady by se ještě muselo ošetřit, aby obě pole měla stejný počet prvků.
moldow
Profil *
Dakujem. Pracuje to ale nie este dobre. URL adresy nie celkom dobre sedia http://forum.abipbox.com/test.php


Tu je cely kod:

include('simple_html_dom.php');

$html = file_get_html('http://update.prismcube.com/rubyFirmware.html?idx=1');

$odkazy = $html->find('a');
$bunky = $html->find('.image');
for ($i = 0, $cnt = min(count($odkazy), count($bunky)); $i < $cnt; $i++) {
    echo '<a href="http://update.prismcube.com/' . $odkazy[$i]->href . '">' . $bunky[$i]->innertext . '</a><br>';
}
1Pupik1989
Profil
Tori:
Jestli je to Simple HTML DOM, tak find vrací vždy pole, pokud není zadaný index v druhém parametru. Čili první příklad bude asi nejlepší.

moldow:
To je zbytečně složité, ne? Vždyť "td.image" obsahuje ten tag "a".

<?php
include('simple_html_dom.php');
 
$html = file_get_html('http://update.prismcube.com/rubyFirmware.html?idx=1');
 
$odkazy = $html->find('.image a');

for ($i = 0, $cnt = count($odkazy); $i < $cnt; $i++) {
  $odkaz = $odkazy[$i];    
  echo '<a href="http://update.prismcube.com/' . $odkaz->href . '">' . $odkaz->innertext . '</a><br>';
}
?>


Nesedí to, protože elementů "a" je na stránce o 1 více, než "td.image".

//edit: Oprava selektoru 'a' za '.image a'.
moldow
Profil *
Funguje vyborne: http://forum.abipbox.com/test.php
Dakujem.
moldow
Profil *
Mam

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: