【问题标题】:var_dump() of strings and variables not showing desired results字符串和变量的 var_dump() 未显示所需结果
【发布时间】:2012-12-08 07:10:37
【问题描述】:

我正在编写一个脚本,它可以卷曲另一个站点,然后解析结果。我似乎遇到了一些奇怪的问题,我不明白它们是从哪里来的;我在下面包含了我的代码有问题的部分以及从它返回的输出:

<?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 个。

注意这些变量名在代码中的其他任何地方都没有使用,这也很有用。

任何想法将不胜感激。

【问题讨论】:

  • 好吧,string(2386) " booking|1||4000015|23628 ",这意味着字符串有 2386 字节。您应该查看测试页面的view-source,而不是呈现的 html,后者显然隐藏了大部分字符串。
  • @Esailija 也许是 xdebug 设置?标准 php.ini 是否让您完全控制 var_dump 的行为?

标签: php arrays string var-dump


【解决方案1】:

要么使用 view-source、text/plain content-type,要么通过命令行运行。

<?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();
?>

我怀疑输入包含&lt;,它被呈现为一些隐藏的html标签。我的意思是,string(2386) " booking|1||4000015|23628 ",表示字符串有2386 字节。

【讨论】:

  • 你工作完美,谢谢;原来有一个隐藏的输入元素,其中一个值有一个管道(|),它在爆炸中被捕获
  • 谢谢。
【解决方案2】:

要从字面上查看函数var_dump() 的结果,请使用HTML's pre element

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

【讨论】:

    【解决方案3】:

    使用带有前置标签的print_r() 而不是var_dump()

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

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-31
      • 2010-09-13
      • 2015-12-18
      相关资源
      最近更新 更多