如何在PHP中获取特定的子字符串

时间:2013-03-21 10:54:40

标签: php string design-patterns explode

我在PHP中有一些字符串形成如下:

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

UPPERCASE部分是常量,而其他部分是变量。

所以模式将是:

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

变量部分的长度可能不同,因此常量将仅为: DEP,符号“:”,符号“,”,CODE和符号“:”。

有没有办法在PHP中使用“模式”提取这些部分,或者我必须用空格分解id,然后检查所有地方以搜索常量?有什么建议吗?

我想从第一个字符串中生成:

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

2 个答案:

答案 0 :(得分: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 :(得分: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