【发布时间】:2013-12-07 20:47:37
【问题描述】:
我正在尝试解析 PHP 字符串中的 & 值。在我运行我的代码后它一直返回空白值,我确信这是因为我的变量($area)中的“&”值。我尝试了 htmlspecialchars、html_entity_decode 但无济于事。请看下面的代码:
<?php
/** Create HTTP POST */
$accomm = 'ACCOMM';
$state = '';
$city = 'Ballan';
$area = 'Daylesford & Macedon Ranges';
$page = '10';
$seek = '<parameters>
<row><param>SUBURB_OR_CITY</param><value>'. $city .'</value></row>
<row><param>AREA</param><value>'. $area .'</value></row>
</parameters>';
$postdata = http_build_query(
array(
'DistributorKey' => '******',
'CommandName' => 'QueryProducts',
'CommandParameters' => $seek)
);
$opts = array(
'http' => array(
'method' => 'POST',
'header' => 'Content-type: application/x-www-form-urlencoded',
'content' => $postdata)
);
/** Get string output of XML (In URL instance) */
$context = stream_context_create($opts);
$result = file_get_contents('http://national.atdw.com.au/soap/AustralianTourismWebService.asmx/CommandHandler?', false, $context);
?>
请问我该如何解决这个问题 谢谢
【问题讨论】:
-
什么返回空白值?为什么你确定你的问题是因为
$area中的值而发生的?为什么在将实体放入$seek变量之前不对其进行编码(因为未编码的&通常在 XML 中无效,除非在 CDATA 块内)? -
@andreimarinescu:这行不通
-
@Mike Brant:我在发帖之前就这样做了,没有返回任何值;我的信心是基于我之前使用相同代码进行的测试;例如,如果我为 $area 提供了另一个不需要编码的值,则代码会从 API 网站返回结果。