/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Kopiere dynamisk streng fra webside
Fra : Mikkel Jørgensen


Dato : 26-08-06 22:07

Hej,

Jeg sidder og leger med et lille projekt hvor jeg har brug for at
kopiere vægt angivelsen fra denne side
http://www.postdanmark.dk/tracktrace/TrackTrace.do?i_stregkode=TS123456789DK&i_lang=IND&sourceurl=http://www.postdanmark.dk/tracktrace/
- i dette tilfælde 7-tallet, men det kunne også være 2,8 eller
hvilket som helst andet.

Hvordan fanger jeg den vægtangivelse bedst, og smider den i en
variabel i mit eget script? Indtil videre har jeg kigget på diverse
streng funktioner, men har ikke kunne stykke noget sammen der gav det
ønskede resultat.

På forhånd tak


 
 
phpartikler.dk (27-08-2006)
Kommentar
Fra : phpartikler.dk


Dato : 27-08-06 11:09

Der er flere ting i det. Den ene er at få hele indholdet fra den angivne url
ned i streng, og den anden er at få trukket selve "7 kg" ud.

Her er en idé til hvordan du kan hive det 7 tal ud (forudsat at $indhold
indeholder kildekoden fra url'en).

$indhold = strip_tags($indhold);
preg_match("/Vægt:.*?(\d+) (kg|gram|g)/s", $indhold, $regs);
echo $regs[1] . ' (' . $regs[2] . ')';


Sig til hvis du også vil have en ide til hvordan du får indholdet fra url'en
ned i en streng.



Mikkel Jørgensen (27-08-2006)
Kommentar
Fra : Mikkel Jørgensen


Dato : 27-08-06 11:52


phpartikler.dk skrev:

> Der er flere ting i det. Den ene er at få hele indholdet fra den angivne url
> ned i streng, og den anden er at få trukket selve "7 kg" ud.
>
> Her er en idé til hvordan du kan hive det 7 tal ud (forudsat at $indhold
> indeholder kildekoden fra url'en).
>
> $indhold = strip_tags($indhold);
> preg_match("/Vægt:.*?(\d+) (kg|gram|g)/s", $indhold, $regs);
> echo $regs[1] . ' (' . $regs[2] . ')';
>
>
> Sig til hvis du også vil have en ide til hvordan du får indholdet fra url'en
> ned i en streng.

mange tak

der er dog et lille problem med koden - hvis pakken på siden er
angivet til at have en vægt på 1,25 kg. så bliver det efter
scriptets behandling til 25 kg. og 0,6 kg. bliver til 6 kg.


phpartikler.dk (27-08-2006)
Kommentar
Fra : phpartikler.dk


Dato : 27-08-06 12:03

Ups, min fejl Prøv med:

preg_match("/Vægt:.*?([\d,]+) (kg|gram|g)/s", $indhold, $regs);

I stedet



Mikkel Jørgensen (27-08-2006)
Kommentar
Fra : Mikkel Jørgensen


Dato : 27-08-06 12:11


phpartikler.dk skrev:

> Ups, min fejl Prøv med:
>
> preg_match("/Vægt:.*?([\d,]+) (kg|gram|g)/s", $indhold, $regs);
>
> I stedet

Perfekt - bortset fra at den ikke altid fanger vægten, således at det
kun er () der bliver udskrevet :-/


phpartikler.dk (27-08-2006)
Kommentar
Fra : phpartikler.dk


Dato : 27-08-06 12:28

> Perfekt - bortset fra at den ikke altid fanger vægten, således at det
> kun er () der bliver udskrevet :-/

Okay, det er nok fordi jeg ikke helt er klar over hvilket format sådan en
vægt kan antage. Kan du komme med nogle eksempler, så det regulære udtryk
kan laves så det passer.



Mikkel Jørgensen (27-08-2006)
Kommentar
Fra : Mikkel Jørgensen


Dato : 27-08-06 13:17


phpartikler.dk skrev:

> > Perfekt - bortset fra at den ikke altid fanger vægten, således at det
> > kun er () der bliver udskrevet :-/
>
> Okay, det er nok fordi jeg ikke helt er klar over hvilket format sådan en
> vægt kan antage. Kan du komme med nogle eksempler, så det regulære udtryk
> kan laves så det passer.

Vægten kan optræde med helholdsvis 1 og 2 cifre foran kommaet, og
maksimum et decimal - altså xx,y.


Arne Feldborg (27-08-2006)
Kommentar
Fra : Arne Feldborg


Dato : 27-08-06 14:48

"Mikkel Jørgensen" <mikkel.joergensen@gmail.com> skrev 26 Aug 2006
14:06:37 -0700


>Hvordan fanger jeg den vægtangivelse bedst, og smider den i en
>variabel i mit eget script? Indtil videre har jeg kigget på diverse
>streng funktioner, men har ikke kunne stykke noget sammen der gav det
>ønskede resultat.
>
Prøv evt. noget i den her stil:

$handle=fopen("http://www.postdanmark.dk/tracktrace/TrackTrace.do?i_stregkode=TS123456789DK&i_lang=IND&sourceurl=http://www.postdanmark.dk/tracktrace/","r");
while (!feof($handle)) {
$line = fgetss($handle, 4096);
if (stristr($line, 'V&aelig;gt:')){
$line = fgetss($handle, 4096);
$kg = explode(' ', trim($line));
break;
}
}
fclose($handle);
echo 'Pakken vejer: '.$kg[0].' kilo';
exit;


Grunden til at der søges på 'Vægt:' og derefter gåes til næste linie er,
at frasen 'kg' forekommer andre steder i side- eller kildeteksten.
Frasen 'Vægt:' (med kolon) forekommer derimod kun een gang.

Bemærk at fgetss() er med 2 s'er.

--
mvh, A:\Feldborg

Slægtsforskning og lokalhistorie i midt- vestjylland
http://hammerum-herred.dk/

Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408522
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste