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では、データ but が含まれており、空の$baseままです。$location$tecon

私は何を誤解したか、間違ったことをしましたか?

リソース: 実際の動作はこちら: http://www.teamdelta.byethost12.com/postroute.php
コード全体はこちら: http://www.teamdelta.byethost12.com/postroute.txt

4

3 に答える 3

1

答えが見つかりました..文字列に対してリストを呼び出すことはできません。単一の preg-match 操作であるため、値は match 配列から直接呼び出すことができます。

于 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 に答える