String parsen naar array

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Vince Niet

Vince Niet

18/10/2008 20:56:00
Quote Anchor link
Hallo,

voor een project wil ik de volgende string omzetten :
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?
$content
= "
auto = <
    volvo = <
        c30 = <
            item_1 = <
                brandstof = < bezine >
                uitleg = < * >
            >
            item_2 = <
                brandstof = < diesel >
            >
        >
    >
    ford = < geen model >
    opel = <
        astra = <
            item_1 = <
                brandstof = < bezine >
            >
            item_2 = <
                brandstof = < diesel >
                uitleg = < * >
            >
        >
        vectra = <
            item_1 = <
                brandstof = < bezine >
            >
        >    
    >
>
"
;
?>


Ik wil als uitkomst :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?
$array
['auto']['volvo']['c30']['item_1']['brandstof'] = 'benzine';
$array['auto']['volvo']['c30']['item_1']['uitleg'] = '*';
$array['auto']['volvo']['c30']['item_2']['brandstof'] = 'diesel';
$array['auto']['ford'] = 'geen model';
$array['auto']['opel']['astra']['item_1']['brandstof'] = 'benzine';
$array['auto']['opel']['astra']['item_2']['brandstof'] = 'diesel';
$array['auto']['opel']['astra']['item_2']['uitleg'] = '*';
$array['auto']['opel']['vectra']['item_1']['brandstof'] = 'benzine';
?>



Ik heb al vanalles geprobeerd.. uiteindelijk ben ik met deze functie gekomen :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?
$i
= -1;
function
seek($content, $key = "") {
    global $i;
    $i++;
    $exit = false;
    $string = "";
    $temp = array();
    while (($i < strlen($content)) and ($exit == false)) {

        switch ($content[$i]) {
            case
"<":
                $return = seek($content, trim($string));
                $temp = array($key => $return);
                break;
            case
">":
                if (is_array($return)) {
                    $temp = array($key => $return);
                }

                else {
                    array_push($temp, trim($string));
                }

                $exit = true;
                break;
            default:

                $string .= $content[$i];
                break;
        }

        $i++;
    }

    return $temp;
}

?>



Iemand een betere oplossing?
Gewijzigd op 01/01/1970 01:00:00 door Vince Niet
 
PHP hulp

PHP hulp

21/11/2024 16:44:12
 
Bo az

Bo az

18/10/2008 22:01:00
Quote Anchor link
Dit gaat 'm niet worden omdat een index van een array nooit twee of meer keer de zelfde kan zijn. Au, wat een blunder.
Gewijzigd op 01/01/1970 01:00:00 door Bo az
 
Jan Koehoorn

Jan Koehoorn

18/10/2008 22:07:00
Quote Anchor link
En hoe kom je eigenlijk aan zo'n string? Ik bedoel: wie slaat dit soort gegevens nou op zo'n manier op?
 
Vince Niet

Vince Niet

18/10/2008 22:27:00
Quote Anchor link
Het is een formaat van een bestand. Er is een dot-net parser voor, maar daar heb ik geen code van. Ik dacht zo van : dat doe ik effe, maar valt me toch tegen.

Misschien ga ik het wel eerst omzetten naar XML.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.