verwijder '& nbsp;' in php

With this url http://www.google.com/ig/calculator?hl=fr&q=150euro=?dirhams, we can have a currency convert.

This is the result : {lhs: "150 Euros",rhs: "1 691.50299 Moroccan dirhams",error: "",icc: true}

Ik probeer te werken met dit resultaat dat op JSON lijkt. Dus ik gebruik json_decode maar het werkt niet.

Dus ik dacht dat het eruit zag als serilize/unserialize dus ik gebruik unserialize maar het werkt niet.

Nervous, I used regexp and at the end I've got my value in dirhams with an   because the value gets 4 numbers before the coma.

And this   I can't delete it ! I try preg_replace, str_replace... no ways !

Dit is de functie

Ik wil gewoon de 'dirhams-waarde', alleen de cijfers, als float krijgen

Iedereen kan mij helpen?

public function convertDirhams($prix, $monnaie_base = 'euro', $monnaie_convert = 'dirhams')
{
    $prix = urlencode($prix);
    $monnaie_base = urlencode($monnaie_base);
    $monnaie_convert = urlencode($monnaie_convert);
    $url = "http://www.google.com/ig/calculator?hl=fr&q=$prix$monnaie_base=?$monnaie_convert";
    $ch = curl_init();
    $timeout = 0;
    curl_setopt ($ch, CURLOPT_URL, $url);
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch,  CURLOPT_USERAGENT , "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)");
    curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    $rawdata = curl_exec($ch);
    curl_close($ch);
    /*$data = explode('"', $rawdata);
    $data = explode(' ', $data['3']);
    $var = $data['0'];*/

    $data = preg_replace('/ /','',$rawdata);
    $data = explode(':',$data);
    $data = preg_replace('/"/','',$data[2]);
    $data = preg_replace('/Moroccandirhams,error/isu','',$data);
    $prix_final = preg_replace("/&#?[a-z0-9]{2,8};/i","",$data);
    //echo $prix_final;


    return (float)trim($data);
} 
0
Wat "werkt niet" over json_decode? (Aangezien er in deze code geen & nbsp; wordt vermeld, betwijfel ik ten zeerste dat dit hier het probleem is)
toegevoegd de auteur Billy ONeal, de bron
@MarkB: klopt, maar ik denk niet dat json_decode zo streng is. Ik kan ATM echter niet testen ...
toegevoegd de auteur Billy ONeal, de bron
@Billy: Wanneer ik json_decode gebruik, is mijn var die het resultaat opslaat leeg. En de & nbsp is een groot probleem, want wanneer ik deze waarde neem en ik geef dit aan Zend_Currency is de waarde niet numeriek. En als ik toevoeg (float) ... 1 600 = 1 <= en dit is een heel groot probleem ^^
toegevoegd de auteur Raphaël, de bron
Hetzelfde als @BillyONeal, json_decode() zou moeten werken. Welke foutmelding/resultaat heb je?
toegevoegd de auteur Clement Herreman, de bron
Ook de & nsbp; verschijnt wanneer u deze in uw browser ècha , omdat de spatie tussen 1 en 691 een ** n * is * aan ** b ** reaking ** sp ** ace. De & nbsp; `is niet jouw probleem.
toegevoegd de auteur Clement Herreman, de bron
@Billy: het is geen geldige json. De sleutels zijn niet genoteerd.
toegevoegd de auteur Marc B, de bron
toegevoegd de auteur user956584, de bron

1 antwoord

Ik zat ook vast aan dit probleem toen ik Google currency converter gebruikte. Ik heb veel dingen geprobeerd en niets werkte voof mij. Eindelijk vond ik dit stuk code.

Je kunt het proberen met:

$number = preg_replace('/[^a-z0-9.]/', '', $number);

of

$number = ereg_replace("[^A-Za-z0-9.]", "", $number );

Both wofks perfectly fine. ereg_replace() is depreciated function in php5.3.

1
toegevoegd