Resultat de curl_exec($ch)
Résolu/Fermé
abcd0
Messages postés
56
Date d'inscription
mercredi 3 avril 2013
Statut
Membre
Dernière intervention
10 juillet 2013
-
29 mai 2013 à 09:05
[Dal] Messages postés 6204 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 27 février 2025 - 3 juin 2013 à 09:57
[Dal] Messages postés 6204 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 27 février 2025 - 3 juin 2013 à 09:57
A voir également:
- Not in a hypervisor partition (hvp=0) (verr_nem_not_available). vt-x is disabled in the bios for all cpu modes (verr_vmx_msr_all_vmx_disabled). result code: e_fail (0x80004005) component: consolewrap interface: iconsole {6ac83d89-6ee7-4e33-8ae6-b257b2e81be8}
- Resultat foot - Télécharger - Vie quotidienne
- Lexer resultat - Télécharger - Sport
- Évariste souhaite télécharger le logiciel 7-zip depuis le site de son éditeur. sélectionnez le résultat de recherche sur lequel il doit cliquer. - Forum Compression
- Évariste souhaite télécharger le logiciel libreoffice depuis le site de son éditeur. sélectionnez le résultat de recherche sur lequel il doit cliquer. ✓ - Forum Windows Vista
- Ch disk - Guide
2 réponses
abcd0
Messages postés
56
Date d'inscription
mercredi 3 avril 2013
Statut
Membre
Dernière intervention
10 juillet 2013
29 mai 2013 à 13:12
29 mai 2013 à 13:12
j'ai fait un explode (",") par rapport à la virgule mais ça marche pas vraiment car il ya les "" et [; je ne sais pas comment recupérer le résultat de curl_setopt directement dans un tableau simple sans afficher me terme saisi (dans mon cas le premier ["facebook",[...)
[Dal]
Messages postés
6204
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
27 février 2025
1 101
29 mai 2013 à 14:15
29 mai 2013 à 14:15
Salut abcd0,
Pour ne pas afficher mais retourner le résultat dans la variable seulement, tu ajoutes l'option suivante avant ton appel $t=curl_exec($ch)
Pour parser le résultat, tu pourrais utiliser une expression régulière qui matche les contenus entre guillemets.
Tu peux faire comme cela :
Cela donne :
Dal
Pour ne pas afficher mais retourner le résultat dans la variable seulement, tu ajoutes l'option suivante avant ton appel $t=curl_exec($ch)
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
Pour parser le résultat, tu pourrais utiliser une expression régulière qui matche les contenus entre guillemets.
Tu peux faire comme cela :
<?php $t = '["Facebook",["Facebook","Facebook Messenger","Facebook (entreprise)",]]'; preg_match_all('/"([^"]*)"/', $t, $matches, PREG_SET_ORDER); $m_count = count($matches); echo "<p>We have $m_count elements</p>"; for ($i = 0; $i < $m_count; $i++) { echo "<li>matches[$i][1] = " . $matches[$i][1] . "</li>"; } ?>
Cela donne :
We have 4 elements matches[0][1] = Facebook matches[1][1] = Facebook matches[2][1] = Facebook Messenger matches[3][1] = Facebook (entreprise)
Dal
abcd0
Messages postés
56
Date d'inscription
mercredi 3 avril 2013
Statut
Membre
Dernière intervention
10 juillet 2013
29 mai 2013 à 14:47
29 mai 2013 à 14:47
pour enlever les caractères spéciaux ça marche merci
mais je ne sais pas est ce que je peux appliquer ce curl_setopt sur un tableau à deux dimension
j'ai essayé avec des boucles et pas de succès:(
mais je ne sais pas est ce que je peux appliquer ce curl_setopt sur un tableau à deux dimension
j'ai essayé avec des boucles et pas de succès:(
[Dal]
Messages postés
6204
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
27 février 2025
1 101
Modifié par [Dal] le 29/05/2013 à 15:36
Modifié par [Dal] le 29/05/2013 à 15:36
curl_setopt permet le passage de paramètres à curl, pas le retraitement de ce qu'il retourne : https://www.php.net/manual/fr/function.curl-setopt.php
L'expression régulière (dans preg_match_all) n'enlève pas les "caractères spéciaux", elle capture ce qui est entre deux paires de guillemets. C'est elle qui parse ton contenu (de façon très simpliste).
Montre à quoi correspond ton "tableau à deux dimension" en faisant un print_r :
Autre question, quel est le format de retour de ton api, est-ce décrit quelque part ?
Une autre possibilité, si c'est un format compréhensible par Php, c'est de l'utiliser avec la fonction eval. Mais c'est dangereux du point de vue de la sécurité, car ton serveur va exécuter ce qu'on lui envoie, sauf à filtrer le contenu avant de l'envoyer à eval (avec une expression régulière qui vérifiera que le contenu qui sera passé à eval ne contient rien de suspect), et encore, personnellement, je ne le ferai pas.
La fonction eval est décrite dans la documentation Php :
https://www.php.net/manual/fr/function.eval.php
Mais son usage est en général découragé en raison des conséquences que cela peut avoir.
Disposer d'un format permettant de parser les données, du type JSON, XML, ou autre est beaucoup plus propre. Là, je ne vois pas, à première vue, à quoi correspond ce format. Il se peut qu'il existe un moyen de le parser proprement et de façon sûre.
Dal
L'expression régulière (dans preg_match_all) n'enlève pas les "caractères spéciaux", elle capture ce qui est entre deux paires de guillemets. C'est elle qui parse ton contenu (de façon très simpliste).
Montre à quoi correspond ton "tableau à deux dimension" en faisant un print_r :
<pre> print_r($t); </pre>
Autre question, quel est le format de retour de ton api, est-ce décrit quelque part ?
Une autre possibilité, si c'est un format compréhensible par Php, c'est de l'utiliser avec la fonction eval. Mais c'est dangereux du point de vue de la sécurité, car ton serveur va exécuter ce qu'on lui envoie, sauf à filtrer le contenu avant de l'envoyer à eval (avec une expression régulière qui vérifiera que le contenu qui sera passé à eval ne contient rien de suspect), et encore, personnellement, je ne le ferai pas.
La fonction eval est décrite dans la documentation Php :
https://www.php.net/manual/fr/function.eval.php
Mais son usage est en général découragé en raison des conséquences que cela peut avoir.
Disposer d'un format permettant de parser les données, du type JSON, XML, ou autre est beaucoup plus propre. Là, je ne vois pas, à première vue, à quoi correspond ce format. Il se peut qu'il existe un moyen de le parser proprement et de façon sûre.
Dal
abcd0
Messages postés
56
Date d'inscription
mercredi 3 avril 2013
Statut
Membre
Dernière intervention
10 juillet 2013
29 mai 2013 à 15:53
29 mai 2013 à 15:53
mon code est sous cette forme:
curl_setopt($curl, CURLOPT_URL, 'http://fr.wikipedia.org/w/api.php?action=opensearch&search='.$tab[$i][$j].'&limit=100&namespace=0')."\n";
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
mon tableau est sous la forme:
array([0]=>array([0]=>table
[1]=>chaise
[2]=>buffet
...)
[1]=>array([0]=>pere
[1]=>enfant
[2]=>mère)
.
.
.
)
je voudrais récupérer pour chaque mot la liste des articles parlant sur ce mot dans wikipedia :(
curl_setopt($curl, CURLOPT_URL, 'http://fr.wikipedia.org/w/api.php?action=opensearch&search='.$tab[$i][$j].'&limit=100&namespace=0')."\n";
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
mon tableau est sous la forme:
array([0]=>array([0]=>table
[1]=>chaise
[2]=>buffet
...)
[1]=>array([0]=>pere
[1]=>enfant
[2]=>mère)
.
.
.
)
je voudrais récupérer pour chaque mot la liste des articles parlant sur ce mot dans wikipedia :(
[Dal]
Messages postés
6204
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
27 février 2025
1 101
Modifié par [Dal] le 29/05/2013 à 16:38
Modifié par [Dal] le 29/05/2013 à 16:38
Si ce que tu affiche ci-dessus est le résultat de print_r, c'est du Php qui est renvoyé on dirait, et il serait directement utilisable avec eval (avec toutes les critiques que l'on peut faire à ce procédé).
J'ignore si c'est cette api que tu utilises : https://www.mediawiki.org/wiki/API:Main_page
Si c'est le cas, tu peux spécifier que le format que tu souhaites est JSON avec un argument format=json. Essaye d'introduire cet argument et vois si le format de retour est différent (il devrait se présenter entre accolades, et non entre crochets). D'ailleurs Wikimedia écrit "Even though the API supports many different output formats such as WDDX, XML, YAML and native PHP, there are plans to remove all formats excepts for JSON, so you might not want to use them."
Tu as des exemples de ce à quoi ressemble JSON là : http://json.org/example.html
Si oui, tu peux ensuite utiliser le JSON retourné avec json_decode :
https://www.php.net/manual/fr/function.json-decode.php
Dal
J'ignore si c'est cette api que tu utilises : https://www.mediawiki.org/wiki/API:Main_page
Si c'est le cas, tu peux spécifier que le format que tu souhaites est JSON avec un argument format=json. Essaye d'introduire cet argument et vois si le format de retour est différent (il devrait se présenter entre accolades, et non entre crochets). D'ailleurs Wikimedia écrit "Even though the API supports many different output formats such as WDDX, XML, YAML and native PHP, there are plans to remove all formats excepts for JSON, so you might not want to use them."
Tu as des exemples de ce à quoi ressemble JSON là : http://json.org/example.html
Si oui, tu peux ensuite utiliser le JSON retourné avec json_decode :
https://www.php.net/manual/fr/function.json-decode.php
Dal
abcd0
Messages postés
56
Date d'inscription
mercredi 3 avril 2013
Statut
Membre
Dernière intervention
10 juillet 2013
29 mai 2013 à 16:57
29 mai 2013 à 16:57
en faite le tableau que j'ai ecrit c'est le tableau à qui je veux appliquer curl_setopt, et je n'arrive pas à obtenir un résultat pour un tableau à deux dimensions si par exemple je specifie et je mets $tab[1][1] par exemple il m'affiche un résultat sinon il m'affiche rien quand j'écris tab[$i][$j] avec deux boucle for: et ce n'est pas mediawiki c 'est directement wikipedia