• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

mehrere trenner bei explode

Sunnyboy

Mitglied
Hallo zusammen

Ich möchte gerne einen String in mehrere Stücke teilen (diese sollten dann schlussendlich als variabel vorliegen). Jedoch habe ich mehrere Trennzeichen die immer gleich sind. Z.B. sollte es die erste Trennung nach "." machen, die zweite nach "/" die dritte bei "&" oder so ähnlich. Ich kenne jedoch nur funktionen, die ein delimiter haben.

Weiss mir jemand eine Lösung?

Ich hoffe auf baldige Antwort
Sunnyboy
 
Werbung:
Ich glaube nicht, dass es mit preg_match geht. Weil die verschiedenen Delimiter sind nicht an der gleichen Stelle. So ist z.B. einer in der ersten Zeile, ein anderer viel weiter im Text und ein weiterer unterschiedlicher Delimiter ist irgendwo sonst. Jedoch ist es immer die gleiche Abfolge. Also käme zuerst der "." als Delimiter und irgendwo sonst dann ein "?" etc. Ich möchte meine Variabeln nun mit jeweils genau dem Inhalt füllen, der sich zwischen zwei unterschiedlichen Delimiter befindet.

So sieht das Beispiel von php.net aus:
PHP:
$pizza  = "piece1 piece2 piece3 piece4 piece5 piece6";
$pieces = explode("Delimiter", $pizza);
echo $pieces[0]; // piece1
echo $pieces[1]; // piece2

Meines währe dann etwa so:
PHP:
$pizza  = "piece1 piece2 piece3 piece4 piece5 piece6";
$pieces = explode("Delimiter1","Delimiter2","Delimiter3","etc", $pizza);
echo $pieces[0]; // piece1
echo $pieces[1]; // piece2

Nur leider gibt es diese Funktion nicht für explode. Und ich bin mir ziemlich sicher, dass es sie auch nicht für preg_match gibt. Bitte sagen wenn ich mich täusche!

Ich hoffe jemand kann mich eines besseren belehren oder hat eine gute Idee...
LG Sunnyboy
 
Werbung:
Poste vielleicht mal eine Testeingabe. Ich habe das so verstanden:

PHP:
<?php

$input = <<<EOT

    Dies ist ein Test und hier kommt der erste
        Delimiter .

    Der zweite
    folgt auf dem
    Fuß /

    Und weil es so schön war,

    hier noch einer :

    Ende Gelände
EOT;

$pattern = '/^(.*?)\.(.*?)\/(.*?):(.*?)$/s';
$matches = array();

preg_match($pattern, $input, $matches);

// Das erste Match ist der Gesamtausdruck. Den brauchen wir nicht.
array_shift($matches);

print_r($matches);

Ausgabe:

Code:
Array
(
    [0] => 
    Dies ist ein Test und hier kommt der erste
        Delimiter 
    [1] => 

    Der zweite
    folgt auf dem
    Fuß 
    [2] => 

    Und weil es so schön war,

    hier noch einer 
    [3] => 

    Ende Gelände
)

Möglicherweise reicht auch bereits:

PHP:
$matches = preg_split('/[.\/:]/', $input);

Das hängt von den genauen Anforderungen an die „Reihenfolge“ ab.
 
Zuletzt bearbeitet:
Merci viel mal. Zum Glück hast du das gezeigt. Sonst hätte ich im glauben weitergelebt, man könnte diese Funktion für fast nichts gebrauchen... :)

Vielen Dank
Sunnyboy
 
Zurück
Oben