0

PHP を使用して送信する必要がある xml があります。xml の 3 つの PHP 変数から、$shippingMode は文字列であり、適切に渡されていません。複数の方法を試しましたが、何も役に立ちません。コードは次のとおりです。

$zip = 90002;
$pounds = 0.1;
$shippingMode = "Express";

function USPSParcelRate($pounds,$zip) {
$url = "http://production.shippingapis.com/shippingAPI.dll";

$devurl ="testing.shippingapis.com/ShippingAPITest.dll";
$service = "RateV4";
$xml = rawurlencode("<RateV4Request USERID='USER' >
<Revision/>
     <Package ID='1ST'>
          <Service>'".$shippingMode."'</Service>
          <ZipOrigination>10025</ZipOrigination>
          <ZipDestination>".$zip."</ZipDestination>
          <Pounds>".$pounds."</Pounds>
          <Ounces>0</Ounces>
          <Container></Container>
          <Size>REGULAR</Size>
          <Width></Width>
          <Length></Length>
          <Height></Height>
          <Girth></Girth>
     </Package>
</RateV4Request>");

$shippingMode連結せずに直接入れてみました。あるいは単に".$shippingMode."

XML 内に文字列を含めるための最も安全で適切な方法はどれですか?

4

2 に答える 2

1

あなたはそれをあなたの関数に呼び出していません....

引数として追加する必要があります。そのようです....

function USPSParcelRate($pounds,$zip,$shippingMode) {

 }
于 2013-06-11T01:57:50.897 に答える
1

$shippingMode関数のスコープ外で変数を割り当てていUSPSParcelRate()ます。関数内で使用するには、引数として渡す必要があります。

function USPSParcelRate($pounds,$zip,$shippingMode) {
    ...
}

編集:

投稿されたように、コードには関数の右中括弧がありません。そのため、再度追加しないとエラーがスローされます。宣言後の関数の呼び出しを含む完全なコードは次のとおりです。

<?php

function USPSParcelRate($pounds,$zip,$shippingMode) {

    $url = "http://production.shippingapis.com/shippingAPI.dll";
    $devurl ="testing.shippingapis.com/ShippingAPITest.dll";
    $service = "RateV4";
    $xml = "<RateV4Request USERID='USER'>
    <Revision/>
        <Package ID='1ST'>
            <Service>'".$shippingMode."'</Service>
            <ZipOrigination>10025</ZipOrigination>
            <ZipDestination>".$zip."</ZipDestination>
            <Pounds>".$pounds."</Pounds>
            <Ounces>0</Ounces>
            <Container></Container>
            <Size>REGULAR</Size>
            <Width></Width>
            <Length></Length>
            <Height></Height>
            <Girth></Girth>
        </Package>
    </RateV4Request>";

    print_r($xml); // for debugging

}

$zip = 90002;
$pounds = 0.1;
$shippingMode = "Express";

USPSParcelRate($pounds,$zip,$shippingMode); // function invocation

?>
于 2013-06-11T01:53:58.050 に答える