字符串和变量的var_dump()未显示预期结果

4

我正在编写一个脚本,它会使用curl命令获取另一个网站的内容并解析结果。但是我遇到了一些奇怪的问题,不知道出了什么错;下面是我代码中有问题的部分以及它返回的输出:

<?php
    //my code to do some logic and build the curl

    $BookingConfirmation = curl_exec($ch);

    $testString = 'a test';
    var_dump($testString);
    echo '<br />';
    echo $BookingConfirmation;
    echo '<br />';
    var_dump($BookingConfirmation);
    echo '<br />';

    $bookingResults = explode('|', $BookingConfirmation);

    var_dump($bookingResults);
    die();
?>

当我加载页面时,会得到以下输出结果:
string(6) "a test"
booking|1||4000015|23628
string(2386) " booking|1||4000015|23628 "
array(6) { 
    [0]=> string(766) " string(1526) "108^1"> booking" 
    [2]=> string(1) "1" 
    [3]=>     string(0) "" 
    [4]=> string(7) "4000015" 
    [5]=> string(81) "23628 " 
} 

根据$BookingConfirmation所显示的内容,我不认为数组中会包含"108^1"。此外,为什么$BookingConfirmation的var_dump会显示它是一个2386个字符长的字符串?它远远没有那么长。另外一个问题是,应该在数组中的第二个元素发生了什么?($bookingResults[1]) 最终的数组转储显示有6个元素,但由于#1被跳过,只显示了5个。
同时,值得注意的是,这些变量名在代码中没有被使用。
如有任何想法,非常感谢。

4
好的,string(2386) " booking|1||4000015|23628 ",这意味着该字符串有2386个字节。你应该查看测试页面的view-source源代码,而不是渲染后的HTML,因为显然它隐藏了大部分字符串。 - Esailija
@Esailija 或许是 xdebug 的设置问题?标准的 php.ini 文件是否能够控制 var_dump 的行为呢? - ficuscr
3个回答

6

可以使用查看源代码、text/plain内容类型或通过命令行运行。

<?php
    header("Content-Type: text/plain; charset=utf-8");
    //my code to do some logic and build the curl

    $BookingConfirmation = curl_exec($ch);

    $testString = 'a test';
    var_dump($testString);
    echo '<br />';
    echo $BookingConfirmation;
    echo '<br />';
    var_dump($BookingConfirmation);
    echo '<br />';

    $bookingResults = explode('|', $BookingConfirmation);

    var_dump($bookingResults);
    die();
?>

我怀疑输入内容包含了<,它被渲染为一些隐藏的HTML标签。我的意思是,string(2386) " booking|1||4000015|23628 "表示该字符串有2386字节。


1
是的,那个完美地起作用了,谢谢;原来有一个隐藏的输入元素,其中一个值中有一个管道符(|),导致它被explode捕获。 - ProdigyProgrammer
谢谢。应该如何转义 < 标签? - briankip

1

要直接查看var_dump()函数的结果,可以使用HTML的pre元素

  echo '<pre>';
  var_dump( $bookingResults );  
  echo '</pre>';

0

使用带有 pre 标签的 print_r() 代替 var_dump()

echo '<pre>';
  print_r( $bookingResults );  
echo '</pre>';

希望能帮到你。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接