1

我在 PHP 中有一些这样的字符串:

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

大写部分是常量,而其他部分是变量。

所以模式将是:

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

可变部分的长度可能不同,因此常量将只有:DEP,符号“:”,符号“,”,CODE,以及符号“:”。

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

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

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

2 回答 2

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");
于 2013-03-21T11:01:48.227 回答
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
于 2013-03-21T11:13:07.240 回答