我在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";
答案 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