php中可能的preg match miss格式

时间:2009-07-25 10:25:03

标签: php format preg-match

我有这段代码:

//fetch data
$data = $_POST['list'];
echo($data);
echo('<br>then<br>');
$data = str_replace("\t", " ", $data);

echo($data);
$matches = array();
$user = array();            
preg_match( "/(.+?) ((?:[A-Z])(?:[0-9]+:){3}[0-9]+) ([0-9]+) \/([0-9]+) ([0-9]+) \/ ([0-9]+)/", $data, $matches ); 
list(,$user['base'],$user['location'],$user['econ'],$user['maxecon'],$user['ports'],$user['maxports']) = $matches;

$base = $users['base'];
$_SESSION['base'] = $base;

$location = $users['location'];
$_SESSION['location'] = $location;

//intergers
$econ =  intval(($users['econ']), 10);
$_SESSION['econ'] = $econ;

$maxecon =  intval(($users['maxecon']), 10);
$_SESSION['maxecon'] = $maxecon;

$ports =  intval(($users['ports']), 10);
$_SESSION['ports'] = $ports;

$maxports =  intval(($users['maxports']), 10);
$_SESSION['maxports'] = $maxports;

我知道preg_match模式是正确的,因为它在另一个页面上成功使用,在每个行上执行操作的列表中具有相同的预期意图。 在此示例中,$data包含数据,但$base$location$tecon仍为空。

我有什么理解或做过什么?

资源: 在这里看到它:http://www.teamdelta.byethost12.com/postroute.php
在这里查看整个代码:http://www.teamdelta.byethost12.com/postroute.txt

3 个答案:

答案 0 :(得分:1)

找到答案.. 无法为字符串调用List。 由于它是单个preg-match操作,因此可以直接从匹配数组中调用值。

答案 1 :(得分:0)

你可以在preg_match之前做$ data var的var_dump,在preg_match之后做$ matches数组的var_dump吗?

任何时候我遇到这些问题,数据格式和正则表达式之间总是存在不匹配。经常是蠢事。

答案 2 :(得分:0)

请将错误报告提升到更高级别:

error_reporting(E_ALL | E_NOTICE);

你会发现什么是错的