【问题标题】:Issue with PHP code in XML structureXML结构中的PHP代码问题
【发布时间】:2017-04-17 02:54:57
【问题描述】:

我有一个带有 XML 结构的 php 代码

$bookreq =<<<XML
<soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'>
<soap:Header>
<AuthenticationSoapHeader xmlns='http://epowerv5.amadeus.com.tr/WS'>
<WSUserName>****</WSUserName>
<WSPassword>****</WSPassword>
</AuthenticationSoapHeader>
</soap:Header>
<soap:Body>
<BookFlight xmlns='http://epowerv5.amadeus.com.tr/WS'>
<OTA_AirBookRQ RecommendationID='0' CombinationID='0'>
<POS />
<TravelerInfo>

--------HERE CODE--------

</TravelerInfo>
<Fulfillment>
<DeliveryAddress>
<AddressLine>Amadeus Rezervasyon Dağıtım Sistemleri A.Ş.</AddressLine>
<AddressLine>Muallim Naci Caddesi No.41 Kat 4 Ortaköy</AddressLine>
<CityName>Istanbul</CityName>
<CountryName Code='TR' />
<PostalCode>34345</PostalCode>
</DeliveryAddress>
<PaymentDetails>
<PaymentDetail PaymentType='None'>
<BillingAddress>
<AddressLine>Amadeus Rezervasyon Dağıtım Sistemleri A.Ş.</AddressLine>
<AddressLine>Muallim Naci Caddesi No.41 Kat 4 Ortaköy</AddressLine>
<CityName>Istanbul</CityName>
<CountryName Code='TR' />
<PostalCode>34345</PostalCode>
</BillingAddress>
</PaymentDetail>
</PaymentDetails>
<PaymentText Name='TripName' Text='Payment text' />
<PaymentText Name='Notes' Text='Payment notes' />
</Fulfillment>
<Ticketing TicketType='BookingOnly'/>
</OTA_AirBookRQ>
</BookFlight>
</soap:Body>
</soap:Envelope>
XML";

我需要粘贴代码

for($a=1;$a<=$adtpass;++$a)
{
  $adtblock;
}

这里 --------这里的代码--------

当我将此代码粘贴到 xml 结构中时,出现错误

解析错误:语法错误,意外'for' (T_FOR)。

如何将这段代码添加到正确的 XML 代码中?

Donald123评论后,重写我的代码

$bookreq = <<<XML
<soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'>
<soap:Header>
<AuthenticationSoapHeader xmlns='http://epowerv5.amadeus.com.tr/WS'>
<WSUserName>****</WSUserName>
<WSPassword>****</WSPassword>
</AuthenticationSoapHeader>
</soap:Header>
<soap:Body>
<BookFlight xmlns='http://epowerv5.amadeus.com.tr/WS'>
<OTA_AirBookRQ RecommendationID='0' CombinationID='0'>
<POS />
<TravelerInfo>
XML;
for($a=1;$a<=$adtpass;++$a)
{
    echo $adtblock;
}
<<<XML
</TravelerInfo>
<Fulfillment>
<DeliveryAddress>
<AddressLine>Amadeus Rezervasyon Dağıtım Sistemleri A.Ş.</AddressLine>
<AddressLine>Muallim Naci Caddesi No.41 Kat 4 Ortaköy</AddressLine>
<CityName>Istanbul</CityName>
<CountryName Code='TR' />
<PostalCode>34345</PostalCode>
</DeliveryAddress>
<PaymentDetails>
<PaymentDetail PaymentType='None'>
<BillingAddress>
<AddressLine>Amadeus Rezervasyon Dağıtım Sistemleri A.Ş.</AddressLine>
<AddressLine>Muallim Naci Caddesi No.41 Kat 4 Ortaköy</AddressLine>
<CityName>Istanbul</CityName>
<CountryName Code='TR' />
<PostalCode>34345</PostalCode>
</BillingAddress>
</PaymentDetail>
</PaymentDetails>
<PaymentText Name='TripName' Text='Payment text' />
<PaymentText Name='Notes' Text='Payment notes' />
</Fulfillment>
<Ticketing TicketType='BookingOnly'/>
</OTA_AirBookRQ>
</BookFlight>
</soap:Body>
</soap:Envelope>
XML;

这就是我所做的,当我在我的 cURL 请求中放入变量 $bookreq 时,这样的代码是否有效?

【问题讨论】:

  • 阅读 heredoc php.net/manual/en/…
  • 我不明白,你想要什么。如果您有一个 php 文件并想插入一些 php 代码,请打开一个编辑器并执行此操作。顺便说一句,您的第二个代码中有错误。在您插入的代码之后,您需要编写: "$bookreq1 .=
  • 我不需要回显我的代码,当我在这个 xml 结构中粘贴 for-loop 时需要,然后可以在 curl 请求中使用 $bookreq

标签: php xml for-loop


【解决方案1】:

您可以制作另一个 PHP 文件来生成完整的 XML 源代码,例如 http://pastebin.com/nU9ZRuCD

然后在主 PHP 文件中,您确实包含:

<?php

ob_start();
require 'my-xml-generator.php';
$bookreq = ob_get_contents();
ob_end_clean();


echo $bookreq;

或者使用模板引擎,例如 Twig:http://twig.sensiolabs.org/doc/intro.html

【讨论】:

  • 然后我可以在我的 cURL 请求中使用 $bookreq 吗?
  • 是的,生成的include(require)的所有内容都会在$bookreq中。
  • 谢谢你的帮助,Rogeriolino
猜你喜欢
  • 1970-01-01
  • 2011-12-08
  • 2012-01-12
  • 1970-01-01
  • 2011-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多