Erottelen nettisivuilta arvon riviltä, tällä hetkellä minulla on käytössä iso purkka, joka valikoi vain kaikki numerot riviltä. Ja koska rivillä on ennen arvoani fontin koon määrittely (joka on 1), niin jotta saan oikean arvon, niin miinustan siitä tässätapauksessa 1000
Mietin miten tämän saisi toteutettua ilman tälläista purkkaa? (jos esimerkiksi fontin kokoa muutetaan, niin oma juttuni menee sekaisin)
rivi josta erottelen:
<font size="1" face="Verdana">106,88%</font></b></nobr></td>
$arvo = preg_replace("/[^0-9,]/", "", $rivi; $arvo = preg_replace("/[,]/", ".", $arvo); $arvo = $arvo - 1000;
kieli: php
EDIT:
Tein nyt siihen sellasen korjauksen että ottaakin tuosta arvosta ekan merkin vaan veks, voi olla et tääkin on hieman purkkaan tuon arvon hakemiseen, mutta saa toistaiseksi ainakin kelvata, ellei parempaa ratkaisua ilmaannu
$arvo = substr($arvo,1);
Voit vaikkapa lukea riviä kunnes tulee merkki >. Jos seuraava merkki on numero, niin lue merkkejä kunnes vastaan tulee %. Ja pilkun voi muuttaa pisteeksi.
Mitäs jos eliminoitkin sieltä kaikki tagit:
$arvo = preg_replace("/<.*?>/","",$rivi);
(Toi nyt ei ole täydellinen jos jossain tagissa olisi lainausmerkkien sisällä > yms.)
$pattern = "/\>([0-9,]+)\%\</"; preg_match($pattern, $rivi, $matches); $arvo = $matches[1];
Eli käytännössä etsii ensin merkin > ja sen jälkeen numeroita/pilkkuja, ja sen jälkeen loppuu merkkeihin %<.
<?php echo strip_tags('<font size="1" face="Verdana">106,88%</font></b></nobr></td>'); ?>
tulostaa: 106,88%
Kannattaa tutustua DOM:iin. PHP:hen sisältyvä toteutus ei ole ihan parhaita, mutta kyllä silläkin hommat hoituu.
Tuolla saa parsittua HTML-tiedoston, jonka jälkeen dokumentin rakenteessa voi navigoida ja poimia tietoja. Vähän kuin Javascriptillä - tosin PHP:n natiivi-DOM-kirjasto ei kyllä pärjää JS:n vastaavalle.
Aihe on jo aika vanha, joten et voi enää vastata siihen.