2009-07-25 6 views
1

J'ai ce code:possible format miss match preg en php

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

Je sais que le modèle preg_match est correct car il est utilisé avec succès sur une autre page pour la même intention souhaitée dans une liste où l'action a été réalisée sur chaque ligne. Dans cet exemple, $data contient les données mais $base, $location et $tecon restent vides.

Qu'est-ce que j'ai mal compris ou fait?

Ressources: voir en action ici: http://www.teamdelta.byethost12.com/postroute.php
oeil à code complet ici: http://www.teamdelta.byethost12.com/postroute.txt

+0

Plz formatez le code dans la première phrase. –

+0

On dirait un gros commentaire (// fetch data $ data ....) est un commentaire. –

Répondre

0

Pouvez-vous faire quelque chose comme un var_dump des données de $ var avant la preg_match, et var_dump des matchs $ tableau après le preg_match?

Chaque fois que j'ai eu ce genre de problèmes, il y avait toujours une discordance entre le format de données et la regex. Quelque chose de stupide, souvent.

0

s'il vous plaît activer le signalement d'erreur à un niveau supérieur:

error_reporting(E_ALL | E_NOTICE); 

Et vous notive ce qui est erroné

1

réponse .. Found liste ne peut pas être appelé pour les chaînes. Comme il s'agit d'une seule opération de pré-correspondance, les valeurs peuvent être appelées directement à partir du tableau de correspondance.