2016-03-24 16 views
-4

Ich habe ein Array, die folgenden Ausgänge:Aufspalten Zeichenfolge in PHP-Array

Array 
( 
    [0] => #EXTM3U 
    [1] => #EXTINF:206,"Weird" Al Yankovic - Dare to be Stupid 
    [2] => E:\Dare to be Stupid.mp3 
    [3] => #EXTINF:156,1910 Fruitgum Company - Chewy, Chewy 
    [4] => E:\Chewy Chewy.mp3 
    [5] => #EXTINF:134,1910 Fruitgum Company - Goody Goody Gumdrops 
    [6] => E:\Goody Goody Gumdrops.mp3 
    [7] => #EXTINF:134,1910 Fruitgum Company - Simon Says 
    [8] => E:\Simon Says.mp3 
    [9] => #EXTINF:255,3 Doors Down - When I'm Gone 
    [10] => E:\When I'm Gone.mp3 [ 
    11] => #EXTINF:179,? And the Mysterians - 96 Tears** 
) 

Ich brauche diese Anordnung dann eine Schleife durch aufzuspalten und jeden Wert in die Datenbank zu speichern, zum Beispiel:

"Weird" Al Yankovic - Dare to be Stupid 
Fruitgum Company - Chewy, Chewy 
Save each value above to database individually. 

Danke im Voraus!


bearbeiten: Hinzugefügt aus den Kommentaren

Lassen Sie mich versuchen und näher zu erläutern. Ich mit einem String beginnen, die wie folgt aussieht:

#EXTM3U #EXTINF:266,10cc - Dreadlock Holiday 
D:\Music - Sorted\Various Artists\De Beste Pop Klassiekers Disc 1\10cc - Dreadlock Holiday.mp3 
#EXTINF:263,1919 - Cry Wolf 
D:\Music - Sorted\Various Artists\Gothic Rock, Vol. 3 Disc 2\1919 - Cry Wolf.mp3 
#EXTINF:318,3 Doors Down - [Untitled Hidden Track] 
D:\Music - Sorted\3 Doors Down\Away From The Sun\3 Doors Down - [Untitled Hidden Track].mp3 

ich dann bin versucht, alles abzustreifen aus diesem und nur noch eine Reihe von Track-Titel, das ist eine Playlist-Datei für Online-Radio. Was ich tue, so weit:

$finaloutput = $_POST['thestring']; 
$finaloutput = str_replace('#EXTINF:','',$finaloutput); 
$finaloutput = str_replace('#EXTM3U','',$finaloutput); 
$finaloutput = preg_split("/\r\n|\r|\n/", $finaloutput); 

foreach ($finaloutput as $value) { 
    echo $value; echo '<br>'; 
} 

Aber ich habe immer noch diese Zeilen bleiben, ich brauche ein str_replace zwischen einem Zeilenumbruch und Ende .mp3

D, um zu versuchen und zu tun: \ Music - Sortieren unten \ 3 Doors \ weg von der Sonne \ 3 Doors Down - [Untitled Hidden Track] .mp3

+0

Und was Sie bisher versucht haben? Sie müssen Ihren Code anzeigen und das Problem erklären, auf das Sie stoßen. – jszobody

+0

Vielleicht lohnt sich ein Blick auf [foreach Schleifen] (http://php.net/manual/en/control-structures.foreach.php) – Henders

+0

Ich unterteilte die erste Zeichenfolge in dieses Array mit: $ finaloutput = preg_split ("/ \ r \ n | \ r | \ n /", $ Abschlussausgabe); Aber jetzt habe ich keine Ahnung, wo ich anfangen soll, die Bits zu entfernen, die ich nicht brauche und nur durchschlinge, was ich brauche, Hilfe! – Jack

Antwort

1

Sie die relevanten Teile aus der Quelle durch die Verwendung von preg_match_all mit einem regex like this extrahieren können.

$pattern = '/^#[^,\n]+,\K.*/m'; 
  • ^ anchor Matches Zeilenanfang in mehrzeiligen Modus die mit mflag gesetzt.
  • #[^,\n]+, entspricht dem Teil von # bis , durch die Verwendung eines negated class.
  • \K is used to reset Beginn der gemeldeten Übereinstimmung. Wir wollen den vorherigen Teil nicht.
  • .* der Teil extrahiert werden: Any amount von any character bis zum Ende der Zeile.
if(preg_match_all($pattern, $finaloutput, $out) > 0); 
    print_r($out[0]); 

PHP demo at eval.in

+0

Warte ... ist nicht 10cc der Künstler? Also [0] und [1] fehlt der Künstler? (Es ist wahrscheinlich nicht meine Art von Musik, da ich nicht sicher bin, aber etwas in meinem Hinterkopf sagt 10cc ist eine Gruppe) – Andreas

+1

Gut gefleckt @Andreas, danke! Ich habe ein Update gemacht und hoffe, dass es die gewünschten Teile extrahiert (: –