Re: Output of curl to an array.
| From: | Adam Royle | Date: | Thu, 21 Mar 2002 13:13:48 +0000 |
| Subject: | Re: Output of curl to an array. | ||
| Groups: | php.db | ||
| Request: | Send a blank email to php-db+get-17798@lists.php.net to get a copy of this message | ||
Hi Keith,
I read your post and decided to write a function for you. Basically what it does is does, is take in a string, and optional newline and value separators, and outputs an associative array.
It actually works, and has a few comments... so yeah, enjoy.. and thanks for the challenge : )
Adam
You can use it like so...
PHP Script (of course, you must either have the function on the same page or include() it like so):
<?php include('extractPairs.php');
header("Content-Type: text/plain");
$strText = "Name1=Value1 \n Name2 = Value 2\nName 3 =Value 3";
$arrPairs = extractPairs($strText);
print_r($arrPairs);
?>
Output:
Array
(
[Name1] => Value1
[Name2] => Value 2
[Name 3] => Value 3
)
//=====> extractPairs.php
<?php
function extractPairs($strText,$strValueSeparator="=",$strNewlineSeparator="\n"){
// kill the bad stuff... prevent a meaningless array
if (!is_string($strText)){ return array(""=>""); }
// gets rid of newlines/spaces etc so we don't get a crap array
$strText = trim($strText);
// separate each line in an element in an array
$arrLines = explode($strNewlineSeparator,$strText);
// loop through $arrLines, separating the names/values and placing them in $arrOutput
for ($i=0;$i<count($arrLines);$i++){
$pos = strpos($arrLines[$i],$strValueSeparator);
// get the text before and after the found position
// and get rid of the whitespace b4 and after
$arrOutput[trim(substr($arrLines[$i],0,$pos))] = trim(substr($arrLines[$i],$pos+1));
}
return $arrOutput;
}
?>
Ok, lets say I have some code here: $result = array(); $ch = curl_init ("https://www.myverificationplace.com/verify.asp"); curl_setopt ($ch, CURLOPT_POST, 1); curl_setopt ($ch, CURLOPT_POSTFIELDS, $args); curl_setopt ($ch, CURLOPT_TIMEOUT, 120); // Set the timeout, in seconds. curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); $result = curl_exec ($ch); curl_close ($ch); Now that we see that, how can I make it so that the output from curl, which is in the variable $result, will be an array, for each line of output? Some of the line of output looks like this: ssl_result_message=APPROVED ssl_txn_id=00000000-0000-0000-0000-000000000000 ssl_approval_code=000000 I need each of the lines to be turned into a variable. Any ideas as to how I might go about this? Thanks, Keith Posehn