Avatar
svanda777
Redaktor
Avatar
svanda777:

Ahoj,
vytvořil jsem funkci která, získá suplování pro naší třídu. Kód mi funguje. Toto vlákno jsem založil z toho důvodu, že se mi kód zná až příliš složitý a zajímalo by mně, zda-li by se to dalo vyřešit nějak efektivněji.

public function getSubstitute() {
        $code = $this->curlGetContents();
        $lineWithSubstitute = "<td class=\"td_supltrid_3\" width=\"11%\"><p>  " . $this->class . "</p></td>";
        if (!mb_strpos($code, $lineWithSubstitute)) {
            return "HI";
        }
        preg_match('~<tr>
    <td class="td_supltrid_3" width="11%"><p>  ' . $this->class . '</p></td>
(.+?)<tr>
    <td class="td_supltrid_3" width="11%"><p>  ~s', $code, $out);
        $substitute = substr($out[0], 0, StrRPos($out[0], "<tr>"));
        $vstup = preg_replace('~</tr>~', '', $substitute);
        $radky = explode("<tr>", $vstup);
        unset($radky[0]);
        foreach ($radky as $index => $radek) {
            $radek = preg_replace('~</p>~', '', $radek);
            $radek = preg_replace('~</td>~', '', $radek);
            $sloupce = explode("<td", $radek);
            unset($sloupce[0]);
            foreach ($sloupce as $ind => $bunka) {
                $zaznam = substr($bunka, StrRPos($bunka, ">") + 1, strlen($bunka));
                $zaznam = ltrim($zaznam);
                $sloupce[$ind] = rtrim($zaznam);
            }
            unset($sloupce[1]);
            $suplovani[$index] = $sloupce;
        }
        return $suplovani;
    }

Ještě přikládám vstupní soubor.

Výstup by měl vypadat nějak takto.

Array
(
    [1] => Array
        (
            [2] => 2.hod
            [3] => Aj
            [4] => AJ2
            [5] => (U32)
            [6] => supluje
            [7] => Růžičková Václava
            [8] => (Mi)
        )

    [2] => Array
        (
            [2] => 4.hod
            [3] => D
            [4] => Fj
            [5] => (U22)
            [6] => supluje
            [7] => Jahn Vítězslav
            [8] => (Sa)
        )

    [3] => Array
        (
            [2] => 5.hod
            [3] => Čj
            [4] => Fj
            [5] => (U22)
            [6] => supluje
            [7] => Čáslavská Eliška
            [8] => (Sa)
        )

)
 
Odpovědět 21.1.2015 21:22
Avatar
Odpovídá na svanda777
Martin Konečný (pavelco1998):

Ahoj,

neměli by to ve formátu XML?
Možná bych zkusil použít DOMDocument, ten by to mohl vytahat snáz a přehledněji, než při použití hromady preg_replace, strpos atd :)

 
Nahoru Odpovědět 21.1.2015 21:44
Avatar
svanda777
Redaktor
Avatar
svanda777:

Bohužel neměli. :-) Myslíš, že bys mi mohl poslat nějaký příklad, jak by se to dělalo pomocí DOMDocument?

PS: Zapomněl jsem označit odpověď Martin Konečný (pavelco1998)

Editováno 21.1.2015 21:47
 
Nahoru Odpovědět 21.1.2015 21:45
Avatar
Ori
Člen
Avatar
Odpovídá na svanda777
Ori:

napríklad niečo takéto (má tam chyby, ale písať saa mi to celé rovno funkčné nechcelo)

http://www.binarytides.com/…domdocument/

 
Nahoru Odpovědět 22.1.2015 7:55
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.