Bonjour,

Je suis débutant en Dev et j'ai besoin de votre aide :)

alors voici ce que je veux faire

lire le code source d'une page web et chercher dans le code source si ya ces deux mots ( userId et userKeyId ) et me donner le numéro de leur ligne après je récupère que ce qui est en chiffres de ces deux lignes

je ne vous demande pas le code mais je voudrais m'expliquer comment faire

Merci

7 réponses


Glaived
Réponse acceptée
<?php
$ch = curl_init("http://fr1.darkorbit.bigpoint.com/index.es?profile=9cNz&profileCheck=p29X&lang=fr");
curl_setopt_array($ch, array(
    CURLOPT_RETURNTRANSFER => true
));
$response = curl_exec($ch);
preg_match("/userId *: *([0-9]+)/i", $response, $match);
if(isset($match[1])) $userId = $match[1];
preg_match("/userKeyId *: *([0-9]+)/i", $response, $match);
if(isset($match[1])) $userKeyId = $match[1];
var_dump( $userId, $userKeyId ); //

ça, c'est juste pour récupérer les id, j'te laisse améliorer le code, c'est du one-shoot

Julien775
Auteur
Réponse acceptée

Bonjour,

C'est bon le script marche bien ! merci

si sa te dérange pas tu peut m'expliquer ce code je ne veux pas faire du C/C je veux apprendre !

Edit : comment je fais pour styliser les echo ?

Hm, c'est pas la bonne façon de procédé je pense.

Tu récupère ta page, et tu fais un preg_match(), en cherchant tout ce qu'il y a entre userId et userKeyId (si ils existent)

Re,

Je vais expliquer de nouveau mon problème.

Je cherche à afficher userId et userKeyId mais le problème c'est que chaque userId de joueur se trouve a une ligne différente par exemple pour celui-ci regarde dans le code source son userId et userKeyId se trouve en 601 et 602
http://fr1.darkorbit.bigpoint.com/index.es?profile=AxDS2&profileCheck=KY1Do&lang=fr

et par contre celui-là http://fr1.darkorbit.bigpoint.com/index.es?profile=9cNz&profileCheck=p29X&lang=fr c'est en 621 et 622

Donc mon idée c'est de chercher userId et userKeyId ( comme ils sont disponible sur chaque profile de joueur ) et récupérer ce qu'il ya dans ces deux lignes après je récupère que ce qui est en chiffres comme ça :

Global ID : XXX(userKeyId)
User ID : XXX (userId)

HTML

<form action="" method="POST">
        <input type="text" placeholder="Profile URL" name="url">
        <input type="submit" value="Submit" name="btn">
    </form>

PHP

<?php

    if (isset($_POST'btn'])) {  
    $url = $_POST'url'];
    // ici le code pour récupèrer le code source et l'id
    } 
    if (empty($_POST'url'])) {
    echo "Please, paste the URL of the player profile.";
    }
    else{
        // ici j'affiche les deux ID
        echo "Player found."; 
    }

?>

Je suis bloqué, j'ai plus de suite aidez-moi ^^
je sais pas bien comment utiliser empty merci de me corriger et surtout critiquer mon code et me donner de nouvelles idées

Merci à vous

Non non non...

Utilise DOMDocument. Pas d'expression régulière pour parser une page, non seulement c'est inutilement complexe, mais surtout c'est tres tres lent par rapport au parser intégré à PHP.

Regarde la documentation, c'est vraiment très simple avec un XPath, et vraiment mille fois plus optimisé.

J'ai du mal à voir comment avec DOMDocument ça sera plus performant, sachant que les IDs sont dans du javascript (hors d'atteinte de DOMDocument non ?)

EDIT: je confirme mes dires, 1) on peu pas 2) même avec une méthode degeux DOMDocument + regex, c'est 7 fois plus long >.> ...

<?php
// On ouvre une session curl, c'est une librarie pour faire des requêtes web entre autres
$ch = curl_init("http://fr1.darkorbit.bigpoint.com/index.es?profile=9cNz&profileCheck=p29X&lang=fr");
curl_setopt_array($ch, array(
    CURLOPT_RETURNTRANSFER => true
    // on passe comme paramètre à notre session curl, comme quoi qu'on ne veux pas retourner directement la chaîne
));
$response = curl_exec($ch); // on execute notre requête, et on recupère le contenue dans $response
preg_match("/userId *: *([0-9]+)/i", $response, $match); // http://www.grafikart.fr/tutoriels/php/expression-reguliere-86
if(isset($match[1])) $userId = $match[1];
preg_match("/userKeyId *: *([0-9]+)/i", $response, $match);// http://www.grafikart.fr/tutoriels/php/expression-reguliere-86
if(isset($match[1])) $userKeyId = $match[1];

"comment je fais pour styliser les echo"

Pas compris, va falloir développer ta question.