Я использую API namecheap, чтобы сделать некоторые вещи, я впервые использую API, и я столкнулся с небольшой проблемой.
Это то, что я до сих пор:
$ApiKey = "**********************";
$ApiUser = "*****";
$UserName = "*********";
$ClientIP = "********";
$NamecheapURI = "https://api.namecheap.com/xml.response";
$executionURL = $NamecheapURI."?ApiUser=".$ApiUser."&ApiKey=".$ApiKey."&UserName=".$UserName."&Command=namecheap.domains.check&ClientIp=".$ClientIP."&DomainList=".$domain;
$xml = simplexml_load_file($executionURL);
print_r($xml);
При печати $ xml мне возвращаются простые объекты XML:
SimpleXMLElement Object
(
[@attributes] => Array
(
[Status] => OK
)
[Errors] => SimpleXMLElement Object
(
)
[Warnings] => SimpleXMLElement Object
(
)
[RequestedCommand] => namecheap.domains.check
[CommandResponse] => SimpleXMLElement Object
(
[@attributes] => Array
(
[Type] => namecheap.domains.check
)
[DomainCheckResult] => SimpleXMLElement Object
(
[@attributes] => Array
(
[Domain] => facebook.com
[Available] => false
[ErrorNo] => 0
[Description] =>
[IsPremiumName] => false
[PremiumRegistrationPrice] => 0
[PremiumRenewalPrice] => 0
[PremiumRestorePrice] => 0
[PremiumTransferPrice] => 0
[IcannFee] => 0
[EapFee] => 0
)
)
)
[Server] => PHX01APIEXT03
[GMTTimeDifference] => --5:00
[ExecutionTime] => 0.008
)
Мой вопрос за пределами этого, как мне двигаться вперед и извлекать данные из этого?
Я пытался рассматривать это как массив, но я не получаю, когда с помощью is_array () для проверки, если это был массив, он говорит, что это не то, что я не понимаю …
Я прошу прощения, если это нубский вопрос, я немного новичок в этом. Короче говоря, что мне нужно сделать, чтобы извлечь данные из этого?
Заранее спасибо!
Научиться использовать SimpleXML гораздо лучше, чем пытаться преобразовать его в массивы / json / что-нибудь еще и просто (отсюда и название). Быстрый пример …
$response = '<?xml version="1.0" encoding="UTF-8"?>
<CommandResponse Type="namecheap.domains.check">
<DomainCheckResult Domain="facebook.com">
<Element>1234</Element>
<Element>12345</Element>
</DomainCheckResult>
</CommandResponse>';
$xml = simplexml_load_string($response);
echo "DOmain=".$xml->DomainCheckResult['Domain'].PHP_EOL;
foreach ( $xml->DomainCheckResult->Element as $value) {
echo "Value=".(string)$value.PHP_EOL;
}
выходы …
DOmain=facebook.com
Value=1234
Value=12345
Вы должны адаптировать это к своему собственному XML, но идея в том, что если вы хотите получить доступ к элементу элемента, вы используете обозначение объекта ->
и если вам нужно получить атрибут, используйте обозначение массива []
,
Итак, в приведенном выше коде первое эхо ($xml->DomainCheckResult['Domain']
) получает <DomainCheckResult>
элемент и выводит атрибут домена.
Тогда foreach
Цикл говорит выбрать каждый <Element>
в <DomainCheckResult>
и выведите значение.
Других решений пока нет …