fork download
  1. <?php
  2.  
  3. $string = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur pulvinar erat quis aliquet pulvinar. Vivamus egestas eros at augue dictum, {mycode var1=foo|var2=zoo|var3=123a|othervarname=digit} a ultrices nisl ullamcorper. Nullam condimentum orci eros, non ornare magna accumsan in.';
  4.  
  5. // TRY AND PULL OUT THE MATCHES
  6. preg_match_all('/(?:(?:\{mycode |\|))(([A-Z0-9]+)=([^|}\s]+)+)/i', $string, $matches);
  7.  
  8. // PRINT IT OUT TO SEE WHAT IT FOUND
  9. print "<pre><font color='orange'>"; print_r($matches); print "</font></pre>";
  10.  
  11.  
  12. // NOW, YOU CAN BUILD EITHER TYPE OF ARRAY
  13. // TO GET THE FIRST KIND OF ARRAY YOU WANT, TRY THIS:
  14. $final_array = array();
  15.  
  16. foreach ($matches[1] AS $pair) {
  17. $final_array[] = explode('=', $pair);
  18. }
  19.  
  20. print "<pre><font color=red>"; print_r($final_array); print "</font></pre>";
  21.  
  22.  
  23.  
  24. // TO GET THE SECOND TYPE OF ARRAY, YOU CAN TRY THIS:
  25. $final_array = array();
  26. $combine = array_combine($matches[2], $matches[3]);
  27. foreach ($combine AS $key => $val) {
  28. $final_array[] = array($key => $val);
  29. }
  30.  
  31. print "<pre><font color=blue>"; print_r($final_array); print "</font></pre>";
Success #stdin #stdout 0.01s 20520KB
stdin
Standard input is empty
stdout
<pre><font color='orange'>Array
(
    [0] => Array
        (
            [0] => {mycode var1=foo
            [1] => |var2=zoo
            [2] => |var3=123a
            [3] => |othervarname=digit
        )

    [1] => Array
        (
            [0] => var1=foo
            [1] => var2=zoo
            [2] => var3=123a
            [3] => othervarname=digit
        )

    [2] => Array
        (
            [0] => var1
            [1] => var2
            [2] => var3
            [3] => othervarname
        )

    [3] => Array
        (
            [0] => foo
            [1] => zoo
            [2] => 123a
            [3] => digit
        )

)
</font></pre><pre><font color=red>Array
(
    [0] => Array
        (
            [0] => var1
            [1] => foo
        )

    [1] => Array
        (
            [0] => var2
            [1] => zoo
        )

    [2] => Array
        (
            [0] => var3
            [1] => 123a
        )

    [3] => Array
        (
            [0] => othervarname
            [1] => digit
        )

)
</font></pre><pre><font color=blue>Array
(
    [0] => Array
        (
            [var1] => foo
        )

    [1] => Array
        (
            [var2] => zoo
        )

    [2] => Array
        (
            [var3] => 123a
        )

    [3] => Array
        (
            [othervarname] => digit
        )

)
</font></pre>