2013-05-28 68 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);

但它劈裂每一个“_”符号后面的字符串。但我需要的结果是这样

$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达网络/手动/ EN/FUNC tion.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); 

而$ m 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