2016-03-24 9 views
-4

У меня есть массив, который выводит следующее:расщепление строки в массив PHP

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** 
) 

Мне нужно разделить этот массив затем перебрать и сохранить каждое значение в базе данных, например:

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

Заранее спасибо!


Редактировать: Добавлено от комментариев

Позвольте мне попытаться объяснить более подробно. Я начинаю с строку, которая выглядит следующим образом:

#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 

Я затем пытается лишить все из-за этого и просто массив названий треков, это файл списка воспроизведения для интернет-радио. Что я делал до сих пор:

$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>'; 
} 

Но я до сих пор эти строки остальные, мне нужно, чтобы попытаться сделать str_replace между разрывом строки и конец .mp3

D: \ Music - Сортировка \ 3 Doors Down \ Away From The Sun \ 3 Doors Down - [Untitled Hidden Track] .mp3

+0

А что вы пробовали до сих пор? Вам нужно показать свой код и объяснить конкретную проблему, с которой вы сталкиваетесь. – jszobody

+0

Может стоить взглянуть на [foreach loops] (http://php.net/manual/en/control-structures.foreach.php) – Henders

+0

Я разделил начальную строку на этот массив, используя: $ finaloutput = preg_split («/ \ r \ n | \ r | \ n /", $ finaloutput); Но теперь я понятия не имею, с чего начать удалять биты, которые мне не нужны, и только прокручивать то, что мне нужно, помогите! – Jack

ответ

1

Вы можете извлечь соответствующие части из источника с использованием preg_match_all с regex like this.

$pattern = '/^#[^,\n]+,\K.*/m'; 
  • ^ anchor матчи начала строки в многострочного режима, который установлен с mflag.
  • #[^,\n]+, соответствует детали от # до , с использованием negated class.
  • \K is used to reset начало сообщаемого матча. Нам не нужна предыдущая часть.
  • .* деталь, подлежащая извлечению: Any amount от any character до конца строки.
if(preg_match_all($pattern, $finaloutput, $out) > 0); 
    print_r($out[0]); 

PHP demo at eval.in

+0

Подождите ... не 10cc художник? Итак, [0] и [1] отсутствует художник? (Скорее всего, это не моя музыка, так как я не уверен, но что-то в моей голове говорит, что 10cc - это группа) – Andreas

+1

Хорошо заметили @ Andreas, спасибо! Я сделал обновление и надеюсь, что он извлекает нужные части (: –

Смежные вопросы