1


0

phpのプリグマッチミスフォーマットの可能性

私はこのコードを持っています:

//fetch data
$data = $_POST['list'];
echo($data);
echo('
then
');
$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ここでコード全体を見てください:

3 Answer


1


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


0


preg_matchの前に$ data varのvar_dumpを、preg_matchの後に$ matches配列のvar_dumpのようなことができますか?

私がこの種の問題を抱えているときはいつでも、データフォーマットと正規表現の間には常に不一致がありました。 愚かなこと、しばしば。


0


エラー報告をより高いレベルに設定してください。

error_reporting(E_ALL | E_NOTICE);

そして、あなたは間違っていると気づくでしょう