XML内容中的Character $被解释为PHP变量

时间:2014-03-07 15:26:31

标签: php xml soap

我有一个XML文件列表作为SOAP信封,我需要从中提取信息,但每当遇到具有字符$的值时,php认为它是变量并且给出错误。

请参阅此example.php文件中的Item标记:

<?php
$xmlstr = <<<XML
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"    xmlns:ChangeRequestPrintService="http://bt2ws.central.sun.com:8088/services/schemas/cr-print">
<SOAP-ENV:Header/><SOAP-ENV:Body>
    <ChangeRequestPrintService:PrintChangeRequest>
        <ChangeRequest>
            <Id>1-CKWF3T</Id>
            <Priority>1-Very High</Priority>
            <Type>Defect</Type>
            <Number>7077438</Number>
            <SubmittedDate>2011-08-10 19:28:01 GMT+00:00</SubmittedDate>
            <Status>3-Accepted</Status>
            <CrNumber>7077438</CrNumber>
            <Area>Defect</Area>
            <Item> Testng text $c </Item>
        </ChangeRequest>
    </ChangeRequestPrintService:PrintChangeRequest>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
XML;
?>

在我的主要PHP文件中,我正在执行的文件,我有:

$bugXML=new SimpleXMLElement($xmlstr);

我收到的错误信息是:

Notice: Undefined variable: c in /path_to_file on line 20.

有什么方法可以让PHP忽略它吗? 我无法更改SOAP信封的内容。

提前致谢。

斯蒂娜

1 个答案:

答案 0 :(得分:1)

您可以执行以下操作之一:

  • 逃避美元符号:Testng text \$c

  • 使用Nowdoc syntax完全禁用变量插值。这仅适用于PHP 5.3+。 $xmlstr = <<<'XML'(注意撇号)。

  • 将XML存储在外部文件(而不是PHP字符串文字)中,然后需要load it