0 votes

Format possible de manque de correspondance preg en php

J'ai ce code :

//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 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ù une action était effectuée sur chaque ligne. Dans cet exemple $data contient les données mais $base , $location y $tecon restent vides.

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

Ressources : voyez-le en action ici : http://www.teamdelta.byethost12.com/postroute.php
Regardez le code entier ici : http://www.teamdelta.byethost12.com/postroute.txt

0voto

sydarex Points 21

Pouvez-vous faire quelque chose comme un var_dump de la var $data avant le preg_match, et un var_dump du tableau $matches après le preg_match ?

Chaque fois que j'ai eu ce genre de problème, il y avait toujours un décalage entre le format des données et la regex. Quelque chose de stupide, souvent.

0voto

Maciej Łebkowski Points 2869

S'il vous plaît, mettez le rapport d'erreur à un niveau plus élevé :

error_reporting(E_ALL | E_NOTICE);

Et tu comprendras ce qui ne va pas.

0voto

lornix Points 10746

Réponse trouvée.. La liste ne peut pas être appelée pour les chaînes de caractères. Comme il s'agit d'une seule opération de preg-match, les valeurs peuvent être appelées directement à partir du tableau match.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X