我有这段代码:
//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
答案 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);
你会发现什么是错的