将数字与未在PHP中解析的字符串连接起来

时间:2013-08-28 02:33:11

标签: php concatenation string-concatenation

我在我的PHP代码中有这个简单的连接,它将几个字符串连接在一起以发出XML请求。出于某种原因,当我将customerId与字符串链连接起来时,它不会被解析。但是,如果我在单引号内传递一个常数,则会对其进行解析。这是一个例子。

如果我连接一个常数,就像这样:

$out='<?xml version="1.0"?>';
$out=$out.'<soapenv:Envelope ';
$out=$out.'xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" ';
$out=$out.'xmlns:v1="http://www.test.com/v1">';
$out=$out.'<soapenv:Header/>';
$out=$out.'<soapenv:Body><v1:loadData><customerNumber>';
$out=$out.'2985634';
$out=$out.'</customerNumber></v1:loadData>';
$out=$out.'</soapenv:Body>';
$out=$out.'</soapenv:Envelope>';

回复$ out会给我:

<?xml version="1.0"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v1="http://www.test.com/v1"><soapenv:Header/><soapenv:Body><v1:loadData><customerNumber>2985634</customerNumber><version>1</version></v1:loadData></soapenv:Body></soapenv:Envelope>

但是如果我传递一个变量而不是一个常数(这是我通过POST方法传递的那个),它就不会被解析,如下所示:

$custId = $_POST['customerId'];
$out='<?xml version="1.0"?>';
$out=$out.'<soapenv:Envelope ';
$out=$out.'xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" ';
$out=$out.'xmlns:v1="http://www.test.com/v1">';
$out=$out.'<soapenv:Header/>';
$out=$out.'<soapenv:Body><v1:loadData><customerNumber>';
$out=$out.$custId;
$out=$out.'</customerNumber></v1:loadData>';
$out=$out.'</soapenv:Body>';
$out=$out.'</soapenv:Envelope>';

echo的输出将是:

<?xml version="1.0"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v1="http://www.test.com/v1"><soapenv:Header/><soapenv:Body><v1:loadData><customerNumber></customerNumber><version>1</version></v1:loadData></soapenv:Body></soapenv:Envelope>

我尝试了不同的连接方法和字符串化变量,但都没有用:(

3 个答案:

答案 0 :(得分:1)

您的代码正常运行,这是我的浏览器中此代码的结果:

<?php
    $_POST['id']=2985634;
    $out='<?xml version="1.0"?>';
    $out=$out.'<soapenv:Envelope ';
    $out=$out.'xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" ';
    $out=$out.'xmlns:v1="http://www.test.com/v1">';
    $out=$out.'<soapenv:Header/>';
    $out=$out.'<soapenv:Body><v1:loadData><customerNumber>';
    $out=$out.$_POST['id'];
    $out=$out.'</customerNumber></v1:loadData>';
    $out=$out.'</soapenv:Body>';
    $out=$out.'</soapenv:Envelope>';
    echo $out;
?>

enter image description here

答案 1 :(得分:0)

在回显XML输出后,使用视图源检查输出结果,而不是仅在浏览器上查看。

答案 2 :(得分:-1)

$custId定义为字符串。

$custId = '2985634';

此外,请尝试使用$out=$out.'string';

,而不是使用$out .= 'string';