Bonjour,
Voila je rencontre un petit problème avec mon code,
Je récupére des informations d'un serveur de jeu via une commande RCon, qui me retourne :
Players on server:
[#] [IP Address]:[Port] [Ping] [GUID] [Name]
--------------------------------------------------
0 xx:2304 0 b2f68915803ee795a7d6711417c26d014(OK) Joe Dalton
1 xx:2304 47 bcadb61d88e22cd56ec53b848fdafd3fe(OK) Marcus Garvey
2 xx:2304 31 fb01878d546ed4d4a85bfebd57dd793f7(OK) Matravo Yuri
3 xx:2304 93 e4621b6d996a323023969da45815a505a(OK) Bill Zelouf
4 xx:2304 32 0eed35681d5be9690d3cdab72e7e8fda8(OK) Mike Connor
5 xx:2304 47 b88492f891351d24ad3d8ca374390c0fb(OK) Vassili Zakharov
6 xx:2304 31 554dd681a3d455b3730da516fa3976a6a(OK) Tonny Zelouf
7 xx:2304 15 118a3fa279d3c2541a6021a7806a691b0(OK) Paco Kosova
8 xx:2304 31 9b18d9184be712f8634cf157de18a4003(OK) Charlie Requiem
(9 players in total)
J'aimerais formatter les données dans un tableau <table> comment faire ?
Ok, donc voyez ceci :
preg_match_all('(([0-9]+) +([x]+):([0-9]+) +([0-9]+) +([a-z0-9]+)\(OK\) +([a-zA-Z ]+))', $rcon->get_players(), $matches);
Les données se trouvent dans $matches
Si vous voulez quelques explications, je peux vous en donner
([0-9]{2,3}.[0-9]{2,3}.[0-9]{1,3}.[0-9]{3}) => ([0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3})
Sinon tu n'auras pas toutes les ips ;)
Je ne comprend toujours pas, je n'ai jamais faire ce genre de formattage, il faudrais m'expliquer ou me montrer comment faire directement
<?php
require_once('inc/rcon.php');
$rcon = new \Nizarii\ArmaRConClass\ARC("ip", 2302, "pass");
echo '<pre>';
var_dump($rcon->get_players());
echo '</pre>';
?>
J'aimerais comprendre oui s'il vous plait :)
M'expliquez comment le mettre dans un tableau maintenant :p
Donc preg_match_all recherche avec un pattern (l'expression régulière), dans $rcon->get_players()et mets tout ce qu'il trouve dans $matches.
Si vous parlez anglais, je vous conseille de visiter http://regexr.com pour plus d'informations sur les expressions régulière, sinon vous pouvez vous renseignez il y a en francais sur d'autres sites
Pour le mettre en tableau, dans $matches vous avez plusieurs tableaux (7 pour être exact).
Ensuite, cela fonctionne de cette manière:
$matches[0][i] représente toute la ième information
$matches[1][i] représente le ième #
$matches[2][i] représente la ième ip
$matches[3][i] représente le ième port
$matches[4][i] représente le ième ping
$matches[5][i] représente le ième guid
$matches[6][i] représente le ième name
(j'espère que vous comprendrez, je ne vois pas trop comment expliquer cela)
En soite pour votre tableaux vous pourriez faire un truc du style :
$tableau = [];
foreach($matches[0] as $k => $v){
$tableau[ $matches[1][$k]] = ['ip' => $matches[2][$k], 'port' => $matches[3][$k]];//et ainsi de suite pour chaque renseignement
}
etant débutant je ne comprend pas trop tout ça, ...
le mieu serait que je trouve quelqu'u, qui puisse me faire le code de facon a ce que sa se mette en place dans un <table>v
Si tu es débutant le mieux en l'occurence, c'est que tu comprenne le raisonnement de AlexJM. Certes les regex sont une chose assez complex pour débuter, mais c'est comme ça qu'on apprend . Pas en recopiant bêtement un code pré maché
Que n'arrives-tu pas à faire ?
Je suis d'accord avec Benjamin Derepas, si on te donne tout ca ne sert à rien, je t'ai donné la regex étant donné que c'est complexe, mais maintenant à toi d'essayer de comprendre. Si tu as besoin de poser des questions, nous sommes là pour y répondre
Le mieu serait le code tout fait, je sais j'en demande bcp mais je comprend que quand je vois que ça fonctionne j'ai appris les bases en regardant des codes tout fait je suis comme ça, please :(
Pour ma part, je ne vais pas te le donner. Je trouve ça dommage se manque de recherche. Le dev web c'est beaucoup de recherche, d'expérimentation etc. Si tu baisses les bras au premier obstacle, tu ne pas apprendre
Bonsoir, il y a différents tutoriels sur le site qui te permettront de mieux appréhender les expressions régulières et la manipulation des tableaux, quelques exemples :
Bonsoir,
Après avoir regarder les tutoriaux sur internet et vidéo de Grafikart je me retrouve bloqué dans la même situation, un echo ou var_dump sur $matches affiche du blanc et pareil pour un echo impossible de comprendre ... Help !
Non les ip sont sous formes d'adresse IP
Si tu n'as pas légèrement modifié la regex que t'a montré AlexJM, c'est normal que tu aies une erreur alors.
Il te faut par exemple remplacer ([x]+)
par ([0-9]{2,3}.[0-9]{2,3}.[0-9]{1,3}.[0-9]{3})
, ce qui donne au complet :
'(([0-9]+) +([0-9]{2,3}.[0-9]{2,3}.[0-9]{1,3}.[0-9]{3}):([0-9]+) +([0-9]+) +([a-z0-9]+)\(OK\) +([a-zA-Z ]+))'
C'est parfait !
Je récupére bien toutes les informations sous formes d'array, il ne me reste plus qu'a le ranger dans un tableau html, une idée de comment faire ? (j'ai du mal avec les array et table html ^^)
Bonjour,
Petit nouveau problème, le code Regex est parfait mais il manque la prise en charge des accents, par exemples certains joueurs on des accents ,comme un "éric paté", et il n'est pas afficher dans la liste.
Quelqu'un pourrait update le regex ?
Merci