[RESOLU] Copier/coller des élément de formulaire d'un site à l'autre

Petit nouveau ! | 7 Messages

12 nov. 2014, 13:56

Bonjours,
Je voudrais aller chercher des éléments de formulaires sur un site internet et les copier dans sur ma page internet.
Dans un premier temps ça serai un élément <select>.

Auriez vous idée des instruction à utiliser ou même une base de code PHP pour réaliser un clone d'un élément de formulaire.

Mammouth du PHP | 1967 Messages

12 nov. 2014, 15:29

A la base tu peux récupérer le code html de la page distante avec file_get_contents() tu cherche la chaine <select et </select> avec strpos() ou avec une expression régulière et tu obtiendra le code html de ton element de formulaire avec un substr()
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Nestecha
Invité n'ayant pas de compte PHPfrance

12 nov. 2014, 15:40

Tout à fait d'accord, tu peux aussi utiliser DOMDocument, mais évite d'utiliser des expressions régulières pour ca !

Petit nouveau ! | 7 Messages

20 nov. 2014, 20:42

Merci pour vos réponses.

J'ai trouvé une solution en chercher des tuto sur le DOMdocument avec une library "simple_html_dom.php".

Voici le lien du tuto http://petit-dev.com/parsez-le-contenu- ... om-parser/.

Nestecha
Invité n'ayant pas de compte PHPfrance

20 nov. 2014, 20:52

Évite d'utiliser cette librairie, le code source est affreusement codé et ultra lent, alors que DOMDocument est vraiment optimisé et très tres tres rapide comparé à simple HTML dom parser.

Petit nouveau ! | 7 Messages

20 nov. 2014, 21:15

Je suis pas contre mais je débute en PHP et je ne suis pas parvenu à trouvé un tuto m'expliquant comment utilisé le 'DOMdocument'. :(

Donc si tu a lien pour m'aider afin que je face les chose bien je suis OK.

Nestecha
Invité n'ayant pas de compte PHPfrance

21 nov. 2014, 06:33

Assez simplement pour que tu comprennes, copie ça dans une page "test.php" :
<html>
<head>
    <meta charset="UTF-8"/>
</head>
<body>
<select name="test" id="test">VALUE</select>
</body>
</html>

<?php

$oDoc = new DOMDocument(); // on crée un objet dom document
libxml_use_internal_errors(true);
$oDoc->loadHTMLFile('test.php'); // on charge la page dans l'objet
$oXPath = new DOMXPath($oDoc); // on crée un objet XPath qui permet l'utilisation des XPath dans l'objet dom document préalablement crée

$aDatas = array();

$aDatas = $oXPath->query('//select'); // on fait une requête XPath sur l'élément qu'on cherche

foreach($aDatas as $oData) { // on boucle pour atteindre la "node" qui est un objet, qui est l'élément en question. Cette "node" à plusieurs méthodes disponibles, dont "nodeValue" qui est équivalent à ->innertext dans simple html dom parser.
    echo $oData->nodeValue;
}
L'avantage c'est bien sûr la rapidité du code en lui même, mais c'est aussi le XPath.

Le XPath c'est magique quand c'est bien utilisé, et bien plus efficace que dom parser. C'est la raison principale pour laquelle j'utilise DOMDocument plutôt que simplehtmldomparser.

Pour tester, ouvre la console de débuggage (F12), cherche un élément qui t'intéresse dans une page, clique droit et fait "copier XPath". Et hop t'as le chemin direct vers cet élément et il te suffira de le copier dans ta query pour l'obtenir dans ton code :)

Souvent le XPath que tu obtiens est "brut", et il vaut mieux en faire un soi même en observant la structure du code de la page ciblée, mais je te conseille vraiment d'y jeter un coup d'oeil !

Petit nouveau ! | 7 Messages

25 nov. 2014, 13:29

Merci pour le mal que tu donne.
Je devrai y arriver avec ces explications.
J'ai plus qu'a ajuster cela à mes besoin est ça devrait être au top.