2011-10-27 6 views
0

このURLはhttp://www.google.com/ig/calculator?hl=fr&q=150euro=?dirhamsです。通貨換算が可能です。削除 " " in PHP

これが結果です:{lhs: "150 Euros",rhs: "1 691.50299 Moroccan dirhams",error: "",icc: true}

私は、JSONのように見えるこの結果で動作するようにしてみてください。 だからjson_decodeを使用しますが、動作しません。

私はserilize/unserializeのように見えたので、私はunserializeを使用しますが、動作しません。

Nervous、私はregexpを使いました。最後には、値がで、私はディラハムで自分の価値を持っています。

そしてこれは 私はそれを削除することはできません!私はpreg_replace、str_replaceを試してみてください...方法はありません!

これは機能

である私はちょうどfloatとして

誰もが私を助けることができる、「ディルハム値」、数字のみを取得したいですか?

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); 
} 
+2

json_decodeについて「動作しません」とは何ですか? (このコードには ' 'がないので、ここではそれが問題になるとは思っていません) –

+1

http://php.net/manual/en/function.html-entity-decode.phpを試してください – user956584

+0

@BillyONealと同じですが、 'json_decode()'が動作するはずです。どのようなエラーメッセージ/結果がありますか? –

答えて

1

Google通貨コンバータを使用してもこの問題が発生しました。私は多くのことを試みたが、何も私のために働いた。最後に私はこのコードを見つけました。

あなたはして試すことができます:

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

または

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

の両方が完全に正常に動作します。 ereg_replace()はphp5.3で償却された関数です。