Search code examples
phpfindstrposstrlen

PHP Properties Parser


Im making a property parser, and I want it to be able to parse a string of any length.

For example, I would like to be able to do the following call:

getDynamicProp("cheese:no;sauce:yes;chicken:brown", "sauce");

and have "yes" returned from it.

Here is what I've got so far:

function getDynamicProp($string , $property){
        $args = func_num_args();
        $args_val = func_get_args();
        $strlen = mb_strlen($string);


        $propstrstart = mb_strpos($string , $property . ":");

        $propstrend1 = substr($string , $propstrstart , )

        $propstrend = mb_strpos($string , ";" , $propstrstart);


        $finalvalue = substr($string , $propstrstart , $propstrend);
        $val = str_replace($property . ":" , "" , $finalvalue);
        $val2 = str_replace(";" , "" , $val);
        return $val2;

    }

Solution

  • You can try this. The function uses explode to transform strings into arrays, which are more easily manipulable :

    function getDynamicProp($string , $property){
      $the_result = array();
      $the_array = explode(";", $string);
    
      foreach ($the_array as $prop) {
        $the_prop = explode(":", $prop);
        $the_result[$the_prop[0]] = $the_prop[1];
      }
      return $the_result[$property];
    }
    
    $the_string = "cheese:no;sauce:yes;chicken:brown";
    echo getDynamicProp($the_string,"cheese");
    echo getDynamicProp($the_string,"sauce");
    echo getDynamicProp($the_string,"chicken");