ProdigyProgrammer
ProdigyProgrammer

Reputation: 415

var_dump() of strings and variables not showing desired results

I am working on a script that curls another site and then parses the results. I seem to be having some weird problems and I can't understand where they are coming from; I have included the problematic part of my code as well as the output that is returned from it below:

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

when I then load the page, I am getting this output:

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

So according to what $BookingConfirmation is showing me, I wouldn't expect the array to contain "108^1" anywhere within it. Also, why would the var_dump of $BookingConfirmation be showing that it is a 2386 character string? It is nowhere near that long. Another question is, what is happening with the second element that should be in the array? ($bookingResults[1]) The final dump of that array is showing that there are 6 elements, but with #1 being skipped there are only 5 being shown.

It also might be useful to note that none of these variable names are used anywhere else in the code.

Any thoughts would be greatly appreciated.

Upvotes: 4

Views: 11075

Answers (3)

SteAp
SteAp

Reputation: 11999

To see the result of the function var_dump() literally, use HTML's pre element:

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

Upvotes: 1

Abhishek Goel
Abhishek Goel

Reputation: 19751

use print_r() with pre tags instead of var_dump()

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

Hope it helps

Upvotes: 0

Esailija
Esailija

Reputation: 140220

Either use view-source, text/plain content-type, or run it through command line.

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

I suspect the input contained <, which is rendered as some hidden html tag. I mean,string(2386) " booking|1||4000015|23628 ", means the string has 2386 bytes.

Upvotes: 6

Related Questions