Kebmans blogg

Hvordan traversere JSON med PHP

Posted in Programmering, Scripting, Teknologi, Webdesign by kebman on 10/04/2013

Nå og da trenger man å traversere JSON-data med PHP. Da kan det være greit å vite hvordan man gjør det. Her er et lite eksempel.

La oss si du har fått en fil, folk.json. Her er den:

{
 "folk": [
 { "fornavn": "Ola", "etternavn": "Nordmann" },
 { "fornavn": "Kari", "etternavn": "Nordmann" },
 { "fornavn": "Lars", "etternavn": "Medelsvensson" },
 ]
}

Det du har her er for alle praktiske formål en flerdimensjonell array. Ofte kan slike by på litt hodebry, men egentlig er det ganske enkelt når man holder på med JSON. Alt du trenger å gjøre er å gjøre om innholdet i filen til et PHP-objekt, slik:

<?php
$json_object = json_decode(file_get_contents('folk.json'));
?>

Her er det som skjer i koden: For det første opprettes en variabel til å hodle objektet på plass, $json_object. Deretter må folk.json leses inn til PHP med funksjonen file_get_contents(). Og til slutt må innholdet som er lest inn gjøres om til et objekt med funksjonen json_decode() – om koden den blir servert er korrekt JSON, vel å merke.

Så OK, vi har nå et JSON objekt lagret i PHP. Hva nå? Vel, siden det er et objekt, er det veldig lett å få tak i delene det består av med foreach. Vanligvis brukes foreach til å traversere flerdimensjonelle arrays, men faktisk kan det også brukes til å traversere objekter. Bare se her:

<ul><?php
foreach ($json_object->folk as $key=>$value) {
 echo "<li>" . $value->fornavn ." ". $value->etternavn . "</li>";
}?></ul>

De vi ber foreach-løkken om å gjøre her, er å skippe direkte til objektet folk, og å dele innholdet i objektet opp i nøkler og verdier. Når det er gjort, har vi – siden det er et objekt – direkte tilgang til underobjektene. Hvert av navneparene er her underobjekter av objektet folk, og vi kan nå hver del av dem ganske enkelt med å peke til riktig underobjekt.

Resultatet er en liste, slik:

  • Ola Nordmann
  • Kari Nordmann
  • Lars Medelsvensson

Vil du nå enda dypere, må du nøste flere foreach-løkker inn i hverandre, men dette er altså den grunnleggende idéen.

Reklamer

Norske tegn med HTML

Posted in Design, Hobby, Internett, Scripting, Teknologi, Typografi, Webdesign by kebman on 02/07/2012

Mange har problemer med å få norske tegn og bokstaver første gangen de koder HTML. Med HTML5 er løsningen enklere enn noen gang.

Basiskoden for å få gyldig HTML5 ser slik ut:

<!DOCTYPE html>
<html>
<head>
	<title>Min tittel</title>
</head>
<body>
	<p>Min første hjemmeside.</p>
</body>
</html>

Kodetabell

Men fortsatt ser de norske bokstavene skikkelig rare ut når du åpner HTML-filen i en nettleser. Det kommer av et eldgammelt problem med datamaskinene; at de var laget kun for det engelske alfabetet. For å korrigere problemet, laget produsentene ekstra kodetabeller som også inneholdt europeiske tegn – deriblant vår egen æ, ø og å – men nettleserne tar bare høyde for disse om du fysisk angir riktig kodetabell med HTML-kode.

Du angir riktig kodetabell ved å legge inn følgende HTML-kode i hodet av HTML-dokumentet ditt:
<meta charset="utf-8" />

Hele HTML-koden vil da se slik ut:

<!DOCTYPE html>
<html>
<head>
	<title>Min tittel</title>
	<meta charset="utf-8" />
</head>
<body>
	<p>Min første hjemmeside.</p>
</body>
</html>

Her er kodetabellen UTF-8 fra Unicode brukt. Dette er den kodetabellen som har har de vanligste europeiske tegnene i seg, og derfor også den kodetabellen som er mest utbredt.

Feilsøking

Om norske tegn fortsatt vises feil er det stort sett en av to grunner til det:

  1. Det er ikke angitt noen kodetabell i HTML-koden, eller feil tabell er angitt.
  2. Filen er lagret med en annen kodetabell enn den du har satt i HTML-koden i tekstredigeringsprogrammet du har brukt.

Selv om du angir riktig kodetabell i HTML-koden, hjelper det ikke om du har lagret selve datafilen med feil kodetabell i redigeringsprogrammet. Noen redigeringsprogram har en fast kodetabell de bruker, men i de fleste programmene kan du angi hvilken kodetabell selve datafilen din skal lagres med. Pass på at det da at du har valgt UTF-8, eller Unicode (UTF-8) som tegnformat før du lagrer filen. Hvor du endrer det, er forskjellig fra hvilket program du bruker, men som regel finnes det i innstillingene.

I redigeringsprogrammet jeg bruker, TextWrangler, er det angitt på barren under tekstredigeringsvinduet, og det er bare å klikke på teksten, så kommer det en liste med alle kodetabellene jeg måtte ønske.

Tegnkoding i xHTML

Med xHTML er det litt mer plunder å få norske tegn.

For det første, trenges XML-versjon sammen med kodetabell helt øverst i dokumentet, før !DOCTYPE, slik:
<?xml version="1.0" encoding="UTF-8"?>

Og endelig må det velges riktig kodetabell for HTML-koden i hodet, slik:
<meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8" />