IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

utiliser explode par la fin


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2013
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 39
    Points : 27
    Points
    27
    Par défaut utiliser explode par la fin
    Bonjour à tous,

    Je n'arrive pas à trouvr comment fair epour utiliser un explode() mais à l'envers. Je m'explique:

    Admettons qu'on est cette chaine de caractaires:
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <input type='text' name='papier' />
    <input type='text' name='papier2' value='assiete' />
    <input type='text' name='macher' value='cueillere' />

    Je voudrais tout simplement récupérer le nom du deuxieme input (papier2)

    J'ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ar = explode(' value='assiete'', $content, 2);
    $resultt = explode("name='", $ar[0]);
    Malheuresement, je sais seulement que c'est le dernier à choper... Je ne sais rien d'autres....

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Admettons qu'on est cette chaine de caractaires:
    Je suis rarement une chaine de caractaires.

    Plus simplement avec une expression régulière.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    preg_match_all("#name='(.+)'#U", $s, $matches);
    echo $matches[1][1];
    Si tu as par contre un vrai document HTML a analyser, il vaut mieux utiliser des bibliothéques prévues pour comme DomDocument.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2013
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 39
    Points : 27
    Points
    27
    Par défaut
    Bonne idée sabotage!

    Je l'ai utilisé ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    preg_match_all('#name="pseudo_[a-zA-Z0-9]+"#', $content, $matches);
    	$i = 0;
    	foreach ($matches as $val) {
    		echo "matched: " . $val[i] . "<br />";
    		$i++;
    	}
    Il ne trouve rien...

    Pourtant dans la source il y a:

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <input type="text" name="pseudo_800e403bae" value="" maxlength="20" tabindex="101" style="background: url(/images/icon_member.png) left center no-repeat; padding-left: 18px;left: -3000px;" class="window_membres_inscription_pseudo" autocomplete="off" />
    <input type="text" name="pseudo_f406e6c43a" value="" maxlength="20" tabindex="2545" style="background: url(/images/icon_member.png) left center no-repeat; padding-left: 18px;position: absolute; z-index: -1;" class="window_membres_inscription_pseudo" autocomplete="off" />

    J'aimerais simplement tous les affihchés! En plus je doit surtout localiser la ligne avec tabindex=101, avec le preg_matche je sais pas si c'est possible.

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    foreach ($matches[0] as $value) {
       echo 'matches : ' . $value . '<br/>';
    }
    mais

    Si tu as par contre un vrai document HTML a analyser, il vaut mieux utiliser des bibliothéques prévues pour comme DomDocument.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2013
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 39
    Points : 27
    Points
    27
    Par défaut
    C'est vrai, ton code fonctionne mais je ne comprend pas pourquoi...
    sais-tu comment je pourrais faire une correspondance entre tabindex=101 et un resultat des matchs ?

    Je ne connais absolument pas DomDocument... Je viens de regarder sur php.net ça à l'air vraiment compliqué pour ci peu, non ?

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2013
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 39
    Points : 27
    Points
    27
    Par défaut
    J'ai fouillé sur le web j'ai trouvé ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $dom = new DOMDocument();
    		$dom->loadHTML($content);
    		$xp = new DOMXpath($dom);
    		$nodes = $xp->query('//input[@tabindex="101"]');
    		$node = $nodes->item(0);
     
    		$car_make = $node->getAttribute('value');
    		echo $car_make;
    La variable ne renvoie rien.
    J'ai ça comme erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    DOMDocument::loadHTML(): Tag content invalid in Entity, line: 1 in /var/www/ekla.php on line 42
    [Thu Sep 26 16:00:18 2013] [error] [client 192.168.1.68] PHP Warning:  DOMDocument::loadHTML(): Tag window invalid in Entity, line: 1 in /var/www/ekla.php on line 42
    [Thu Sep 26 16:00:18 2013] [error] [client 192.168.1.68] PHP Warning:  DOMDocument::loadHTML(): htmlParseStartTag: invalid element name in Entity, line: 1 in /var/www/ekla.php on line 42
    [Thu Sep 26 16:00:18 2013] [error] [client 192.168.1.68] PHP Warning:  DOMDocument::loadHTML(): Tag content invalid in Entity, line: 1 in /var/www/ekla.php on line 42
    [Thu Sep 26 16:00:18 2013] [error] [client 192.168.1.68] PHP Warning:  DOMDocument::loadHTML(): htmlParseStartTag: invalid element name in Entity, line: 1 in /var/www/ekla.php on line 42
    [Thu Sep 26 16:00:18 2013] [error] [client 192.168.1.68] PHP Warning:  DOMDocument::loadHTML(): Unexpected end tag : div in Entity, line: 89 in /var/www/ekla.php on line 42
    [Thu Sep 26 16:00:18 2013] [error] [client 192.168.1.68] PHP Warning:  DOMDocument::loadHTML(): Tag result invalid in Entity, line: 91 in /var/www/ekla.php on line 42
    EDIT: Je suis bête j'ai oublié 'value'... je l'ai remplacé par name il a trouvé du coup.
    Mais j'ai toujours mes erreurs.

  7. #7
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    En version quick&dirty :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    preg_match('#<input type="text" name="(pseudo_[a-zA-Z0-9]+)" value="" maxlength="20" tabindex="101"#', $s, $matches);
    echo $matches[1];
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2013
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 39
    Points : 27
    Points
    27
    Par défaut
    oui oui, très intéressant.

    Je te remercie de ton aide, je vais aller rebosser !

Discussions similaires

  1. TCP : Utilisation paquet par paquet plutot que flux
    Par dockurt2k dans le forum Développement
    Réponses: 6
    Dernier message: 12/01/2007, 11h03
  2. Réponses: 13
    Dernier message: 18/10/2006, 16h09
  3. lecture d un fichier en commencant par la fin
    Par m.nico dans le forum Delphi
    Réponses: 6
    Dernier message: 26/05/2006, 15h31
  4. [Flash] commencer par la fin...
    Par knuts dans le forum XML/XSL et SOAP
    Réponses: 4
    Dernier message: 12/08/2005, 16h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo