我的PHP文件中的substr函数结果为空字符串。
这是我的PHP代码:
<?php
$requestArray = array(
'http'=>array(
'method'=>"GET",
'header'=>"User-agent: MKUxA&8PtUYP(d3So)pfPSIvD5cf75"
)
);
$stream = stream_context_create($requestArray);
$streamResult = file_get_contents('https://beoordelingen.feedbackcompany.nl/samenvoordeel/scripts/flexreview/getreviewxml.cfm?ws=9673&publishIDs=0&nor=0&publishDetails=0&publishDetailScores=0&publishOnHold=0&sort=desc&foreign=1&v=3&publishDetailScores=1&Basescore=10', false, $stream);
$str = substr($streamResult, 0, 3);
var_dump($str);
echo "<br>";
var_dump($streamResult);
echo "<br>";
var_dump($http_response_header);
?>
结果如下:
string(3) "string(251) " 8.7109https://beoordelingen.feedbackcompany.nl/NL-NL/De%2DMariannehoeve.html "
array(6) { [0]=> string(15) "HTTP/1.1 200 OK" [1]=> string(37) "Content-Type: text/xml; charset=UTF-8" [2]=> string(25) "Server: Microsoft-IIS/7.5" [3]=> string(21) "X-Powered-By: ASP.NET" [4]=> string(35) "Date: Mon, 22 Feb 2016 13:39:34 GMT" [5]=> string(17) "Connection: close" }
有人能告诉我我做错了什么并帮助我吗?
答案 0 :(得分:0)
正确返回内容,但您在浏览器中看到上述结果,因为浏览器会解释标记。
您的结果是:
<?xml version="1.0" encoding="UTF-8" ?> <rating><score>8.7</score><scoremax>10</scoremax><noReviews>9</noReviews><detailslink>https://beoordelingen.feedbackcompany.nl/NL-NL/De%2DMariannehoeve.html</detailslink><reviewDetails></reviewDetails></rating>
所以,substr($streamResult, 0, 3)
是<?x
, - 呈现 - 是:
此外,$streamResult
高于XML - 呈现 - 是:
8.7109 https://beoordelingen.feedbackcompany.nl/NL-NL/De%2DMariannehoeve.html
如果您想在浏览器中查看结果,请写下:
echo htmlentities( $streamResult );
返回的数据是XML,所以 - 解析它 - 你必须使用DOMDocument
(或另一个解析器):
$dom = new DOMDocument();
$dom->loadXML( $streamResult );
$score = $dom->getElementsbyTagName( 'score' )->item(0)->nodeValue;
echo $score;
示例abowe将输出:
8.7