Emily Emily - 5 months ago 12
PHP Question

Convert text file input to array in PHP

I want to convert text file input to an array in PHP.

Here is my text file sample input:

Name:abc
Age: 50
Address:
Postal:123
City:and
DOB:1/5/1996


Array in PHP should be (Output):

[name]->ABC
[AGE]->50
[ADDRESS][POSTAL]->123
[Address][city]=and
[DOB]=1/5/1996
[DOB][time]->8:20


or as

Array(1)
[Name]=>ABC
[Age]=>50
[Address]==> Array(2)
[City]=>and
Array(1)
[DOB]=>1/5/1996
Array(2)
[Time]=>8:20


I truly don't have any clue. Please help me get desired output. PHP code to implement this.

Thanks a lot.

Answer

This will works for you.(how's it works is added as comment):-

<?php

define('CHARS',4); //constant to remind yaml spec for number of spaces.

$input = "Name:abc
Age: 50
Address:
         Postal:123
          City:and
DOB:1/5/1996";

$inarray = explode("\n",$input); // explode with new line
echo "<pre/>";print_r($inarray); // print array
$final_array = array(); // create final empty array
$child_array = ''; // an empty variable
foreach ($inarray as $key=>$inarra){ // loop iteration
    $identSize = strlen($inarra)-strlen(ltrim($inarra)); // check that original value have any spaces at thhe begning or not?
    $explode_data = explode(':',$inarra); // explode with :
    if($identSize == 0){ // if original string have no spaces at the begning
        $child_array = trim($explode_data[0]); // asssign its first value to newely created variable
        $final_array[trim($explode_data[0])] = trim($explode_data[1]); // add key value pair to final array
    }else{
        $final_array[$child_array][trim($explode_data[0])] = trim($explode_data[1]); // add key value pair as an subarray to the prevously created index which have no space at the begning
    }
}
echo "<pre/>";print_r($final_array);
?>

Output:- https://eval.in/587362