2013-05-28 4 views
1

Ниже строки Мне нужно разделить. Я попытался с PHP функции взрываетсяРазделить строку в php

$ ссылки = «7_5_7_http: //test.com/folder/images/7_newim/5_car/7_february2013/p/a00/p01/video-1.mov_00: 00: 09" ;

$ ex_link = explode ('_', $ link);

Но это spliting строку после каждого «_» символ. Но мне нужно результаты, как этот

$ex_link[0] ==> 7; 
$ex_link[1] ==> 5; 
$ex_link[2] ==> 7; 
$ex_link[3] ==> http://test.com/folder/images/7_newim/5_car/7_february2013/p/a00/p01/video-1.mov; 
$ex_link[2] ==> 00:00:09; 

Любая идея для достижения этой цели.

Спасибо заранее

+1

Посмотрите на [preg_match] (HTTP: // PHP .net/ручной/EN/FUNC .preg-match.php) и http://www.regular-expressions.info/ для начала. – elclanrs

ответ

3

Explode имеет третий параметр, почему люди усложнять?

$link = "7_5_7_http://test.com/folder/images/7_newim/5_car/7_february2013/p/a00/p01/video-1.mov_00:00:09"; 
$array = explode('_', $link, 4); 
$temp = array_pop($array); 
$array = array_merge($array, array_reverse(array_map('strrev', explode('_', strrev($temp), 2)))); // Now it has just become complexer (facepalm) 
print_r($array); 

Выход:

Array 
(
    [0] => 7 
    [1] => 5 
    [2] => 7 
    [3] => http://test.com/folder/images/7_newim/5_car/7_february2013/p/a00/p01/video-1.mov 
    [4] => 00:00:09 
) 

Online demo

+3

Но как насчет времени? – elclanrs

+0

@elclanrs facepalm ... – HamZa

+0

@elclanrs исправлено и спасибо ... – HamZa

2

preg_match('/(\d)_(\d)_(\d)_([\w:\.\/\/\-]+)_([\d]{2}:[\d]{2}:[\d]{2})/', $link, $matches); 

И $ м atches:

array(6) { 
    [0]=> 
    string(95) "7_5_7_http://test.com/folder/images/7_newim/5_car/7_february2013/p/a00/p01/video-1.mov_00:00:09" 
    [1]=> 
    string(1) "7" 
    [2]=> 
    string(1) "5" 
    [3]=> 
    string(1) "7" 
    [4]=> 
    string(80) "http://test.com/folder/images/7_newim/5_car/7_february2013/p/a00/p01/video-1.mov" 
    [5]=> 
    string(8) "00:00:09" 
} 
+0

+1 Мне нравится этот подход –

1

Это один является простейшим один

$result = preg_split('%_(?=(\d|http://))%si', $subject); 
+0

Приятно, я думал о решении с 'preg_split()', и вы пришли с ним ** + 1 **! – HamZa

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