1

我有这个代码:

//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

4

3 回答 3

1

找到答案.. 不能为字符串调用列表。因为它是一个单一的预匹配操作值,所以可以直接从匹配数组中调用。

于 2009-07-25T15:44:39.790 回答
0

您可以在 preg_match 之前执行 $data var 的 var_dump 以及在 preg_match 之后执行 $matches 数组的 var_dump 之类的操作吗?

每当我遇到这类问题时,数据格式和正则表达式之间总是不匹配。一些愚蠢的事情,经常。

于 2009-07-25T10:32:15.907 回答
0

请将错误报告调高:

error_reporting(E_ALL | E_NOTICE);

你会注意到什么是错的

于 2009-07-25T10:37:29.327 回答