String in einen multidiemnsionalen Array wandeln

Hallo,

wieder mal einen Hänger…

möchte gerne folgende textarea-Einträge in einen zweidimensionalen Array bringen:

---------- INHALT DER TEXTAREA --------------
Neu/http://meineseiteistneu.de
Neu/http://deineseiteistauchneu
Alt/http://dieseseiteistal
nochälter/http://diesesetieistnochälter
---------- ENDE -----------------------------

Also das sit nicht 1:1 der Ihanlt, aber der Aufbau sollte klar sein. Vor dem Slash steht die Kategorie, danach die URI.

nunmöchte ich gerne folgendes tun. Diese Daten in eine zweidimensionalen array bringen. Das heisst, dass die kategorie und die URI jeweils in einem array sind:

Beispiel:

$array[0][0] = "Neu";
$array[0][1] = "http://meineseiteistneu.de";

$array[1][0] = "Neu";
$array[1][1] = "http://deineseiteistauchneu";

Auch hier nur Schematisch dargestellt wie die Array letztenendes aussehen sollen. Ich weiss, das es eine funktion gibt mit welcher ich das erste vokommende Zeichen eines Strings finden kann und den sich DAVOR befindlichen string zurückgeben lassen kann. stristr() oder strstr() sind schon überlegungen gewesen. Doch diese geben immer nur den string NACH dem zeichen wieder.

Meine Denke war einfach das ich 2 for schleifen mache und den string zunächst mit

explode('\n'; $string);

in eine Array teile. Dann diese Inhahlte wiederum, in ein array teile. doch da liegt genaus der Denkfehler ich komm nicht weiter.

Danke für die Hilfe

Nachtrag
Das mein Denkansatz

$fullLink = explode('\n', $\_REQUEST['txt\_links']);

 for($i=0; $i=count($fullLink); $i++)
 {
 for($k=0 ; $k=1; $k++)
 {
 $link[$i] = explode("/", $fullLink[$i]);
 }

 }

Hallo !

Hallo,

wieder mal einen Hänger…

möchte gerne folgende textarea-Einträge in einen
zweidimensionalen Array bringen:

---------- INHALT DER TEXTAREA --------------
Neu/http://meineseiteistneu.de
Neu/http://deineseiteistauchneu
Alt/http://dieseseiteistal
nochälter/http://diesesetieistnochälter
---------- ENDE -----------------------------

Also das sit nicht 1:1 der Ihanlt, aber der Aufbau
sollte klar sein. Vor dem Slash steht die Kategorie, danach
die URI.

nunmöchte ich gerne folgendes tun. Diese Daten in eine
zweidimensionalen array bringen. Das heisst, dass die
kategorie und die URI jeweils in einem array sind:

Beispiel:

$array[0][0] = „Neu“;
$array[0][1] = „http://meineseiteistneu.de“;

Also so was ?

$array=array\_map(create\_function('$n','return explode("/",$n,2);'), explode("\n", $text));

Auch hier nur Schematisch dargestellt wie die Array
letztenendes aussehen sollen. Ich weiss, das es eine funktion
gibt mit welcher ich das erste vokommende Zeichen eines
Strings finden kann und den sich DAVOR befindlichen string
zurückgeben lassen kann. stristr() oder strstr() sind schon
überlegungen gewesen. Doch diese geben immer nur den string
NACH dem zeichen wieder.

explode passt da schon…

Meine Denke war einfach das ich 2 for schleifen mache und den
string zunächst mit

explode(’\n’; $string);

in eine
Array teile. Dann diese Inhahlte wiederum, in ein array teile.
doch da liegt genaus der Denkfehler ich komm nicht weiter.

So mache ich das da oben auch, und das passt sogar in eine Zeile :wink:
Das Array mit den gesplitteten Zeilen wird direkt an array_map übergeben, was dann das Splitten nach dem ersten / übernimmt. Die 2 deswegen in dem explode, weil ansonsten auch an den http:// Slashes gesplittet würde…

Alexander

Hallo !

So sollte es auch gehen, wobei eine Schleife zu viel ist und die Begingung in der Schleife nicht passt:

Das mein Denkansatz

$fullLink = explode('\n', $\_REQUEST['txt\_links']);
for($i=0; $i

Alexander

P.S.: Ggfs. musst du aus den Rohdaten vorher evtl. noch überflüssige \r per str\_replace entsorgen...

zunächst mal Danke für die Hilfe.
An diese Möglih konnte ich ja nicht denken, denn ich kannte sie nicht :smile: muss diese funktionen mal nachschlagen.

Es hat sich an meiner kleinen zusammenstellung etwas geändert:
Es kommt noch ein String hinter einem anderen trennzeichen dazu:

NEU/Das ist der Name,http://www.dieurl.de
NEU/Das ist auch der Name,http://www.dieurlneuer.de

u.s.w.

Kann ich dann einfach in create_function einen weitere explode-parameter einfügen?

PS: das mit dem wegfall der HTTP//: hab ich auch bemerkt :smile:

Meine Lösung:

for($i=0; $iSher umständlich, verwirrend und absolut unübersichtlich. 

achso, ich weiss meine English ist mießerabel :smiley:

Hallo !

zunächst mal Danke für die Hilfe.
An diese Möglih konnte ich ja nicht denken, denn ich kannte
sie nicht :smile: muss diese funktionen mal nachschlagen.

Es hat sich an meiner kleinen zusammenstellung etwas geändert:
Es kommt noch ein String hinter einem anderen trennzeichen
dazu:

NEU/Das ist der Name,http://www.dieurl.de
NEU/Das ist auch der Name,http://www.dieurlneuer.de

u.s.w.

Kann ich dann einfach in create_function einen weitere
explode-parameter einfügen?

Naja, explode kann nunmal nur ein Trennzeichen (Warum hast du statt dem , nicht auch nen / genommen ?), nimm halt preg_split(’#[/,]#’, … statt dem explode
http://de.php.net/manual/de/function.preg-split.php

Meine Lösung:
for($i=0; $i

Hallo !

zunächst mal Danke für die Hilfe.
An diese Möglih konnte ich ja nicht denken, denn ich kannte
sie nicht :smile: muss diese funktionen mal nachschlagen.

Es hat sich an meiner kleinen zusammenstellung etwas geändert:
Es kommt noch ein String hinter einem anderen trennzeichen
dazu:

NEU/Das ist der Name,http://www.dieurl.de
NEU/Das ist auch der Name,http://www.dieurlneuer.de

u.s.w.

Kann ich dann einfach in create_function einen weitere
explode-parameter einfügen?

Naja, explode kann nunmal nur ein Trennzeichen (Warum hast du
statt dem , nicht auch nen / genommen ?),

Würde ich ja, aber ich bekomme diese Links selbst nur zugeschickz und habe keinerlei Einfluß auf das Fromat.

nimm halt
preg_split(’#[/,]#’, … statt dem explode
http://de.php.net/manual/de/function.preg-split.php

werd ich!!

Meine Lösung:
for($i=0; $i