سؤال

أحتاج إلى تحويل العملة، اليورو إلى الدولار.
يقدم البنك المركزي الأوروبي الأسعار هنا:
http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml
يمكنني الحصول على سعر الدولار الأمريكي باستخدام العقدة الأولى، ولكن ماذا لو قاموا بتغيير الطلب؟
هل أحتاج إلى شيء أكثر موثوقية؟ليس لدي أي فكره عن كيفية..

$xml = @simplexml_load_file('http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml');
echo "dollar: " . $xml->Cube->Cube->Cube[0]->attributes()->rate;
هل كانت مفيدة؟

المحلول

استخدم فقط كسباث للحصول على أي عقدة معcurrency سمة يساوي "USD"، التي من شأنها أن تفعل خدعة.

$xref  = simplexml_load_file('http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml');
$nodes = $xref->xpath('//*[@currency="USD"]');

echo $nodes[0]['rate'];

نصائح أخرى

أنها توفر رمز المثال في هذه الصفحة:

فقط انقر فوق علامة التبويب للمطورين

ويوجد أيضًا (غير مُصان) حزمة PEAR لأسعار الصرف

يجب أن لا تهتم إذا قاموا بتغيير الترتيب.إذا فعلوا ذلك، فإنهم يفعلون.

ويمكنك تكرار خلال كائنات simpleXML مع foreach

foreach( $xml->Cube->Cube as $cube ) {
    if( isset( $cube->attributes()->rate ) ) {
         $rate = $cube->attributes()->rate; 
    }    
}

ويمكنك استخدام كسباث

$rate = $xml->xpath("//Cube[currency='USD']/rate")

وأنت على حق. حاليا تقوم على افتراض دخول 0th أن يكون USD وإذا تغير النظام في المستقبل فشل توليكم. وذلك لجعل مستقلة طلبك من النظام، ويمكنك التحقق من وجود السمة currency في حلقة. لحظة العثور على واحد مع "USD" القيمة التي يمكن الحصول على سمة rate المقابلة لها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top