2013-03-21 82 views
1

在PHP中一些字符串這樣形成:我如何獲得特定子在PHP

26301 - DEP : df 30 01 codename, CODE : cdef 

大寫部分是常數,而其他部分的變量。

所以圖案將是:

xxxxxx - DEP : yy zz kk wwwwwwww, CODE : ffff 

可變部件的長度可以是不同的,所以常量將只有: DEP中,符號「:」,符號「」,代碼,並再次使用符號「:」。

是否有一種方法可以使用「模式」在PHP中提取這些部分,還是必須使用空格分解id,然後檢查所有搜索常量的位置?有什麼建議?

我想產生,從第一個字符串:

$dep = "df 30"; 
$codenumber = "01"; 
$code = "cdef"; 
+1

sscanf()可能是一個有用的功能,看看 - http://www.php.net/manual/en/function.sscanf.php – 2013-03-21 10:55:56

+0

我會看看,謝謝 – 2013-03-21 10:56:34

+0

你試過什麼? – Alfwed 2013-03-21 10:57:07

回答

1

的sscanf()是要走的路:http://www.php.net/manual/en/function.sscanf.php

你的情況可能是這樣的:

$var = "26301 - DEP : df 30 01 codename, CODE : cdef"; 
list($first, $second, $third, $fourth, $fifth, $sixth) = sscanf($var, "%d - DEP : %s %d %d %s, CODE : %s"); 
1

使用正則表達式:

$str = '26301 - DEP : df 30 01 codename, CODE : cdef'; 
preg_match('/(.+) - DEP : (.+) (\d+) codename, CODE : (.+)/', $str, $array); 
list($str, $line, $dep, $codenumber, $code) = $array; 
echo "line: $line, dep: $dep, codenumber: $codenumber, code: $code"; 
// Result: line: 26301, dep: df 30, codenumber: 01, code: cdef