-1

我正在使用 namecheap API 做一些事情,这是我第一次使用 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() 测试它是否是一个数组时,它说它不是我不明白的......

如果这是一个菜鸟问题,我深表歉意,我对此有点陌生。简而言之,我需要做什么才能从中提取数据?

提前致谢!

4

1 回答 1

1

学习使用 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,但想法是,如果您想访问项目的元素,则使用对象表示法->,如果需要获取属性,请使用数组表示法[]

所以在上面的代码中,第一个 echo ( $xml->DomainCheckResult['Domain']) 获取<DomainCheckResult>元素并输出 Domain 属性。

然后foreach循环说 fetch each <Element>inside<DomainCheckResult>并输出值。

于 2018-02-26T08:17:12.340 回答