PHP:substr返回空字符串

时间:2016-02-22 13:15:20

标签: php string substr

我的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" }

有人能告诉我我做错了什么并帮助我吗?

1 个答案:

答案 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