CURL : Variable retourné par curl_exec()

Résolu
St3fffff
Messages postés
23
Date d'inscription
mercredi 22 novembre 2000
Statut
Membre
Dernière intervention
28 juin 2008
- 23 avril 2008 à 11:37
St3fffff
Messages postés
23
Date d'inscription
mercredi 22 novembre 2000
Statut
Membre
Dernière intervention
28 juin 2008
- 24 avril 2008 à 09:57
Bonjour,

Jutilise un petit code pour me connecter sur une page et récuperer une suite de chiffre.

$c = curl_init("http://localhost/test/test.php");
$texte = curl_exec($c);
curl_close($c);

echo "" . $texte . "";

if (preg_match("#[0-9]+$#", $texte))
{
    echo "
Expression reconnue";

    $nombre = preg_replace("#([0-9]+)$#", "\\1", $texte);
   
    echo "

" . $nombre . "";
}
else
{
    echo "

Expression non reconnue";
}

La page test contient : Voici un nombre: 3335289191

Le problème est que le code actuelle me retourne "1" à la place de \\1 qui est le dernier chiffre de 3335289191.
Mais le plus étonnant c'est que lorsque je définis $texte = "Voici un nombre: 3335289191"; avant la condition le code me retourne "3335289191" à la place de "\\1".

Donc le problème viendrait de CURL... Mais la je ne vois pas du tout !

19 réponses

malalam
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Membre
Dernière intervention
2 mars 2010
25
23 avril 2008 à 20:27
Hmmm...cURL, c'est simple.
Tu attaques une url; dans ton cas, tu ne veux pas des en-têtes (culopt_header à false), tu veux juste l'output de ta page (return_transfer à true). Point.
A partir de là, ton curl_exec() renverra exactement l'output du script appelé (généralement, un echo...).
Je n'ai jamais eu de problème avec, et je l'utilise TRES souvent.
Donc si ça ne fonctionne pas, soit ton script  cURL est faux, soit le script appelé est foireux.
3
Teclis01
Messages postés
1423
Date d'inscription
mardi 14 décembre 2004
Statut
Membre
Dernière intervention
29 décembre 2012
4
23 avril 2008 à 11:45
Je ne penses pas que la lib CURL ait un problème...

je comprend pas bien pq tu curl pour faire un pregmatch d'une chaine locale au script...
$nombre = preg_replace("#([0-9]+)$#", "\\1", $texte);

Je crois que tu utilises pas les bonnes choses au bon endroit...

Il vaut mieux poser une question et passer pour bête que le rester toute sa vie

 Les geeks n'ont pas une case en moins ils commencent juste à compter à partir de zéro
0
St3fffff
Messages postés
23
Date d'inscription
mercredi 22 novembre 2000
Statut
Membre
Dernière intervention
28 juin 2008

23 avril 2008 à 11:53
J'utilise ce script en local pour le développer.

Qu'entends tu par "pas les bonnes choses au bon endroit" ?
0
Teclis01
Messages postés
1423
Date d'inscription
mardi 14 décembre 2004
Statut
Membre
Dernière intervention
29 décembre 2012
4
23 avril 2008 à 12:17
Bah je trouves bizar de curler une url, recuperer le resultat et ne pas l utiliser et appliquer une regexp a une autre url... ceci juste d'un point de vue logique...

Il vaut mieux poser une question et passer pour bête que le rester toute sa vie

 Les geeks n'ont pas une case en moins ils commencent juste à compter à partir de zéro
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
St3fffff
Messages postés
23
Date d'inscription
mercredi 22 novembre 2000
Statut
Membre
Dernière intervention
28 juin 2008

23 avril 2008 à 12:27
Je recupèrer un nombre, sur une page qui m'est utile et j'en fait un lien pour l'utilisateur.

Cependant le problème n'est pas là (ou je comprend plus rien), c'est que ma regex fonctionne quand je créé moi même la variable et ne fonctionne pas quand je la récupère via CURL.
Y aurait il une différence entre le contenu de la chaine et ce qui est affiché ?
0
Teclis01
Messages postés
1423
Date d'inscription
mardi 14 décembre 2004
Statut
Membre
Dernière intervention
29 décembre 2012
4
23 avril 2008 à 12:43
test avec un var_dump mais je pense pas tu recupère un string.

Il vaut mieux poser une question et passer pour bête que le rester toute sa vie

 Les geeks n'ont pas une case en moins ils commencent juste à compter à partir de zéro
0
St3fffff
Messages postés
23
Date d'inscription
mercredi 22 novembre 2000
Statut
Membre
Dernière intervention
28 juin 2008

23 avril 2008 à 12:59
var_dump me retourne en valeur boolléen TRUE.
0
Teclis01
Messages postés
1423
Date d'inscription
mardi 14 décembre 2004
Statut
Membre
Dernière intervention
29 décembre 2012
4
23 avril 2008 à 13:07
http://ch2.php.net/manual/fr/function.curl-exec.php

le curl a réussit ...

$texte=true;

if (preg_match("#[0-9]+$#", $texte))

...no comment...

Il vaut mieux poser une question et passer pour bête que le rester toute sa vie

 Les geeks n'ont pas une case en moins ils commencent juste à compter à partir de zéro
0
St3fffff
Messages postés
23
Date d'inscription
mercredi 22 novembre 2000
Statut
Membre
Dernière intervention
28 juin 2008

23 avril 2008 à 13:14
Mais, ca ca marche je les dit plus haut...

C'est quand je fais le preg_replace il me remplace \\1 par 1...

Et lorsque je définis moi même $texte sans passer par CURL, preg_replace me remplace \\1 par 3335289191

C'est pourquoi je trouve ca louche et malheureusement je suis obligé de passer par CURL...
0
malalam
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Membre
Dernière intervention
2 mars 2010
25
23 avril 2008 à 13:38
Hello,

moi je ne comprends rien à ce que tu fais. Tu appelles une url en cURL dont on ne sait pas ce qu'elle te retourne.
Tu ne définis rien du retour que tu veux (cURL a des options, et un tas en plus, un tas de paramètres à fixer).
Et tu maintiens que c'est cURL qui ne fonctionne pas.Pourquoi ce ne serait pas ton script test.php, ou simplement ta façon d'utiliser cURL ? Parce que là, tu ne dis pas à cURL que tu veux récupérer l'output de la page appelée, déjà. Tu ne lui dis absolument rien.
0
St3fffff
Messages postés
23
Date d'inscription
mercredi 22 novembre 2000
Statut
Membre
Dernière intervention
28 juin 2008

23 avril 2008 à 13:54
En faite, je cherche à récuprer tout ce que contient la page test.php et non l'output.

En l'occurence il sagit de : Voici un nombre: 3335289191

$texte contient donc toute la page.

La regex que je vous est donné doit normalement récupère le nombre qui est à la fin de la variable.

Je ne pense pas qu'il sagit de test.php puisqu'il s'agit juste de lire le fichier. Ca pourait être ma facon d'utilisé CURL, mais je ne vois pas ce qu'il faut paramétrer.
0
Teclis01
Messages postés
1423
Date d'inscription
mardi 14 décembre 2004
Statut
Membre
Dernière intervention
29 décembre 2012
4
23 avril 2008 à 14:36
$texte contient true. pas le texte que tu veux. alors récuperer la fin de la variable que tu voudrais c'est pas possible. Lis la docoumentazionne

Il vaut mieux poser une question et passer pour bête que le rester toute sa vie

 Les geeks n'ont pas une case en moins ils commencent juste à compter à partir de zéro
0
St3fffff
Messages postés
23
Date d'inscription
mercredi 22 novembre 2000
Statut
Membre
Dernière intervention
28 juin 2008

23 avril 2008 à 14:43
Ok j'ai compri, je vais chercher ! :)
0
St3fffff
Messages postés
23
Date d'inscription
mercredi 22 novembre 2000
Statut
Membre
Dernière intervention
28 juin 2008

23 avril 2008 à 15:05
J'ai essayé avec CURLOPT_TRANSFERTEXT, mais toujours le même problème.
Ce qui est bizar aussi c'est que le var_dump me retourne une valeur booléen, et que lorsque je fais un echo une chaine apparait...
0
malalam
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Membre
Dernière intervention
2 mars 2010
25
23 avril 2008 à 19:11
CURLOPT_RETURN_TRANSFER je crois.
Et ça renvoie l'output de la page appelée.
0
St3fffff
Messages postés
23
Date d'inscription
mercredi 22 novembre 2000
Statut
Membre
Dernière intervention
28 juin 2008

23 avril 2008 à 20:19
C'est plus que coriace, je n'es pas trouver beaucoup de doc sur

CURLOPT_RETURN_TRANSFER, mais en testant rien n'a changer.
J'ai essayé aussi avec CURLOPT_HEADER mais rien...
0
St3fffff
Messages postés
23
Date d'inscription
mercredi 22 novembre 2000
Statut
Membre
Dernière intervention
28 juin 2008

23 avril 2008 à 20:23
On ne peut pas EDIT... Désoler

Pour information il sagit de : CURLOPT_RETURNTRANSFER.

De plus j'ai aussi essayé CURLOPT_FTPASCII qui est presque identique à CURLOPT_TRANSFERTEXT.
0
Teclis01
Messages postés
1423
Date d'inscription
mardi 14 décembre 2004
Statut
Membre
Dernière intervention
29 décembre 2012
4
24 avril 2008 à 09:29
Oui c'est simple je me souviens vaguement une application que j'avais faite... curlst... (d'ailleurs fauidrait que je pose la source je deconneuuuu )
Le concept etait basé sur l attaque d'url et la creation d un flux xml parsable pour intégration de données.

Il vaut mieux poser une question et passer pour bête que le rester toute sa vie

 Les geeks n'ont pas une case en moins ils commencent juste à compter à partir de zéro
0
St3fffff
Messages postés
23
Date d'inscription
mercredi 22 novembre 2000
Statut
Membre
Dernière intervention
28 juin 2008

24 avril 2008 à 09:57
Merci bien, en effet il ne me restait plus qu'a mettre false pour culopt_header....
Par contre il semblerait que ce soit returntransfer et non return_transfer.
0