Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: arvon erottelu html-koodista

Axuu [22.02.2011 13:58:17]

#

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);

Jaska [22.02.2011 14:18:14]

#

Voit vaikkapa lukea riviä kunnes tulee merkki >. Jos seuraava merkki on numero, niin lue merkkejä kunnes vastaan tulee %. Ja pilkun voi muuttaa pisteeksi.

Grez [22.02.2011 14:39:33]

#

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.)

Sose [22.02.2011 15:00:18]

#

$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 %<.

peg [22.02.2011 19:19:35]

#

<?php
echo strip_tags('<font size="1" face="Verdana">106,88%</font></b></nobr></td>');
?>

tulostaa: 106,88%

LaNu [22.02.2011 20:10:46]

#

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.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta