PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [Gelöst] Text zwischen Trennzeichen in Array


to.ni
13.02.2005, 12:42
Hallo Forum,

folgendes Problem: ich habe einen String mit folgendem Aussehen:

[|img.jpg|position|beschreibungstext|]

wie bekomme ich nun den Text zwischen den | in ein Array?
Im Endeeffekt sollte ein Array wie folgt herauskommen:

array("img.jpg", "position", "beschreibungstext");

Die Anzahl der Einträge zwischen den Pipes ist variabel...
Ich komme nur soweit, dass ich am ende einen String wie folgt habe:

"img.jpg|position|beschreibungstext"

Aber den weiter zu zerlegen funktioniert bei mir irgendwie nicht.

Bin für jede Hilfe dankbar, da langsam am verzweifeln... :mauer:

mfg tobi


to.ni
13.02.2005, 13:04
Nochmal hallo,

hier eine erste Lösung (jetzt doch).
Allerdings kommt mir das ganze ziemlich umständlich vor. Daher meine Frage, ob das nicht einfacher geht:

$text = "Das ist ein Beispieltext mit Bild [|img.jpg|Beschreibungstext|position|link|]";

preg_match("/\[(\|.*)*\]/", $text, $parameter_liste);
preg_match_all("/\|(.[^\|]*)/", $parameter_liste[1], $parameter);

$parameter = $parameter[1];

print_r($parameter);

Thx und mfg tobi

Jidder
13.02.2005, 14:31
von diesem Text ("img.jpg|position|beschreibungstext") ausgehend kannst du das mit explode() (http://www.php.net/explode) viel einfacher als mit regulären Ausdrücken in ein Array umwandeln.

$text = "img.jpg|position|beschreibungstext";
$tarray = explode("|", $text);

crypt
19.02.2005, 15:27
mist ^^...die antwort wollte ich geben *g*
ich füg dem mal nur noch was hinzu weil er ja den string wie folgt hat:
[|img.jpg|position|beschreibungstext|]

$string='[|img.jpg|position|beschreibungstext|]';
$string=ereg_replace("[","",ereg_replace("]","",$string));
$out=split("|",$string);


//$out=^{0=>"img.jpg",1=>"position",2=>"beschreibungstext"...}

to.ni
20.02.2005, 13:53
Danke für eure Hilfe!

Inzwischen funktioniert alles wie geplant (und auch wesentlich einfacher/systemschonender als mit regex). Manchmal sieht man halt den Wald vor lauter Bäumen nicht... :)

mfg tobi