Avatar billede Hans1 Praktikant
18. januar 2012 - 13:36 Der er 18 kommentarer og
1 løsning

Hjælp til trim funktion

Hej

Er det muligt i PHP at tage en del ud af en string og kun få vist den del som er angivet.

Jeg har mange af disse linier:

'j1':{'ti':'tekst1','da':'18.01.12','ic':'006','pr':'C','id':'10406862','st':'Tekst2','tr':'','rt':false},

Hvordan ville i få tekst1 og tekst2 ud af denne linie.
tekst1 og tekst2 er naturligvis en ny tekst for hver linie.
j1 bliver forhøjet for hver linie til j1, j2... j10 o.s.v
Avatar billede erikjacobsen Ekspert
18. januar 2012 - 13:39 #1
Det ligner JSON, så måske du bør bruge http://dk2.php.net/manual/en/function.json-decode.php
Avatar billede Hans1 Praktikant
18. januar 2012 - 13:59 #2
Ja det ligner meget men kan ikke bruge trim funktion.
og måske file_get_contents
Avatar billede erikjacobsen Ekspert
18. januar 2012 - 14:16 #3
Hvis du allerede har linierne i variabler, skal du ikke yderligere bruge file_get_contents. Nej, trim kan ikke bruges. Hvis man absolut vil gøre noget andet, kunne man teorietisk bruge regulære udtryk.

Men jeg tror på at den funktion jeg henviser til må være både rigtigst og nemmest.
Avatar billede Hans1 Praktikant
18. januar 2012 - 14:22 #4
Avatar billede erikjacobsen Ekspert
18. januar 2012 - 14:28 #5
Det er da også korrekt - JSON skal bruge "..." til strenge, og du får '...'

Et hack ville være at erstatte ' med " - som måske vil virke...

Eller bede DSB lave det som JSON.
Avatar billede erikjacobsen Ekspert
18. januar 2012 - 14:39 #6
Og så er det ikke i UTF8. Ok, et hack du kan se på

http://n0p.com/955511.php

som indeholder:

<?php

$a=file_get_contents('http://www.dsb.dk/Rejseplan/bin/stboard.exe/mn?L=vs_dsbticker&amp;ml=m&amp;&input=N%F8rreport%20st!&boardType=dep&time=13:02&selectDate=today&productsFilter=00001000000&additionalTime=&start=yes&disableEquivs=yes&ignoreMasts=1&outputMode=tickerDataOnly&maxJourneys=100');;
$a = str_replace("'","\"",$a);
$a = str_replace('Ø','OE',$a);
$a = str_replace('ø','oe',$a);
$a = str_replace('journeysObj =','',$a);

  $b = json_decode($a);

  var_dump($b);

print "<hr>".($b->headTexts[0]);


?>
Avatar billede olebole Juniormester
18. januar 2012 - 15:45 #7
<ole>

Undskyld, men dette er ikke - og har aldrig været ment som - JSON. Det er en ren JavaScript fil - bortset fra, at den er sendt som text/html.

Erik, jeg tror ikke, din kode overlever en test  =)

/mvh
</bole>
Avatar billede olebole Juniormester
18. januar 2012 - 15:58 #8
Prøv dette i stedet:

$a=file_get_contents('http://www.dsb.dk/Rejseplan/bin/stboard.exe/mn?L=vs_dsbticker&amp;ml=m&amp;&input=Nørreport%20st!&boardType=dep&time=13:02&selectDate=today&productsFilter=00001000000&additionalTime=&start=yes&disableEquivs=yes&ignoreMasts=1&outputMode=tickerDataOnly&maxJourneys=100');

$a = str_replace("'","\"",$a);
$a = str_replace('journeysObj =','',$a);
$a = utf8_encode($a);

  $b = json_decode($a);

  var_dump($b);

print "<hr>".($b->headTexts[0]);
Avatar billede erikjacobsen Ekspert
18. januar 2012 - 16:10 #9
Ok, Ole, det kan være DSB også standser i Nivå - det ved vi Jyder ikke så meget om. Men det var hvad Q&D-afdelingen lige kunne diske op med.
Avatar billede olebole Juniormester
18. januar 2012 - 16:15 #10
Men vi kjøvenhavnere ved til gengæld fra CV, at toget standser i Bjerringbro (by night, i det mindste)  *o)
Avatar billede Hans1 Praktikant
18. januar 2012 - 16:59 #11
Ole> Hvordan udskriver jeg de strings som kommer efter arrayet?
Avatar billede olebole Juniormester
18. januar 2012 - 17:03 #12
Som det er vist i #8. $b i eksemplet indeholder et standard objekt, hvis properties du kan udskrive. Hvis du kan PHP, vil du næppe være i tvivl, når du ser, hvad eksemplet udskriver
Avatar billede Hans1 Praktikant
18. januar 2012 - 17:18 #13
mener du hvis jeg går et nummer op i arrayet?

fx
$b->headTexts[3]
Avatar billede olebole Juniormester
18. januar 2012 - 17:36 #14
$b->headTexts[3] udskriver strengen Spor. Hvis du mener strengene, der udgør selve køreplanen, kan du f.eks. skrive:

print $b->j1->ti;

- som udskriver 13:02
Avatar billede Hans1 Praktikant
18. januar 2012 - 17:46 #15
Det var nemlig det sidste jeg mente, men som jeg forklarede forkert.

Du skal have mange tak for hjælpen Ole.
Avatar billede olebole Juniormester
18. januar 2012 - 17:49 #16
Selvtak. Hverken Erik eller jeg samler point, så du lægger bare et svar og accepterer det, så tråden lukkes  =)
Avatar billede Hans1 Praktikant
18. januar 2012 - 18:07 #17
Det modtaget :)
Avatar billede Hans1 Praktikant
18. januar 2012 - 18:42 #18
Nu er tråden jo lukket men jeg prøvede lige at lave det med foreach:

Er det muligt at lave time1 og time2 til kun en variabel.
Mit problem var j1, j2 o.s.v

foreach (range(1,10) as $i) {
$time1 = "j".$i."";
$time2 = $b->$time1->ti;
echo $time2;
}
Avatar billede erikjacobsen Ekspert
18. januar 2012 - 19:51 #19
Hvad er det lige du mener?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester