سؤال
أحتاج إلى تحويل العملة، اليورو إلى الدولار.
يقدم البنك المركزي الأوروبي الأسعار هنا:
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
المقابلة لها.