Resultat de curl_exec($ch)
Résolu
abcd0
Messages postés
56
Date d'inscription
Statut
Membre
Dernière intervention
-
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
quand je récupère le resultat de $t=curl_exec($ch); il m'affiche ce résultat:
["Facebook",["Facebook","Facebook Messenger","Facebook (entreprise)",]]
moi je voudrais récupérer ce résultat ce forme d'un tableau comme ça :
array(
[0]=>Facebook
[1]=>Facebook Messenger
[2]=>Facebook(entreprise)
)
est ce que c'est possible ça!! car j'ai essayé mais ça marche pas
merci d'avance pour votre aide
quand je récupère le resultat de $t=curl_exec($ch); il m'affiche ce résultat:
["Facebook",["Facebook","Facebook Messenger","Facebook (entreprise)",]]
moi je voudrais récupérer ce résultat ce forme d'un tableau comme ça :
array(
[0]=>Facebook
[1]=>Facebook Messenger
[2]=>Facebook(entreprise)
)
est ce que c'est possible ça!! car j'ai essayé mais ça marche pas
merci d'avance pour votre aide
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
- Resultat loto d'aujourd'hui rdc ✓ - Forum Excel
- 5/90 resultat - Forum Linux / Unix
- Resultat loto 5/90 - Forum Excel
2 réponses
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",[...)
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
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
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 :(
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
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