выдаліць "& NBSP;" у 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}

Я стараюся працаваць з гэтым вынікам, які выглядае як JSON. Таму я выкарыстоўваю json_decode , але ён не працуе.

Так я думаў, што гэта выглядае як serilize/десериализации, таму я выкарыстоўваю десериализации , але ён не працуе.

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 !

гэта функцыя

Я проста хачу, каб атрымаць «дырхам значэння», толькі лічбы, як паплавок

Любы чалавек можа мне дапамагчы?

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
Што «не працуе» аб json_decode? (Улічваючы, што няма & NBSP; спасылкі ў гэтым кодзе, я сумняваюся моцна, што гэта праблема тут)
дададзена аўтар Billy ONeal, крыніца
@MarkB: Так, але я не думаю, што json_decode з'яўляецца строгім. Я не магу праверыць ATM, хаця ...
дададзена аўтар Billy ONeal, крыніца
@Billy: Калі я выкарыстоўваю json_decode, мой вар, запасы якога вынік пусты. І & NBSP з'яўляецца вялікай праблемай, таму што, калі я бяру гэта значэнне, і я даю гэта Zend_Currency значэнне не лікавае. А калі дадаць (паплавок) ... за 1 600 = 1 <= і гэта вельмі вялікая праблема ^^
дададзена аўтар Raphaël, крыніца
Тое ж @BillyONeal, json_decode() павінен працаваць. Што паведамленне пра памылку/вынік у вас ёсць?
дададзена аўтар Clement Herreman, крыніца
Акрамя таго, & nsbp; з'яўляецца пры ECHO гэта ў вашым браўзэры, як прастора паміж 1 і 691 з'яўляецца ** п * * на ** б ** reaking ** зр ** ас. & NBSP; `гэта не ваша праблема.
дададзена аўтар Clement Herreman, крыніца
@Billy: Гэта не дзейнічае JSON. Ключы не пазначаныя.
дададзена аўтар Marc B, крыніца
дададзена аўтар user956584, крыніца

1 адказы

Я таксама затрымаўся з гэтай праблемай, калі я выкарыстаў канвэртар валют Google. Я спрабаваў шмат рэчаў, і нічога не працуе для мяне. Нарэшце я знайшоў гэты кавалак кода.

Вы можаце паспрабаваць:

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

або

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

Both wабоks perfectly fine. ereg_replace() is depreciated function in php5.3.

1
дададзена