CURL : Variable retourné par curl_exec()

[Résolu]
Signaler
Messages postés
23
Date d'inscription
mercredi 22 novembre 2000
Statut
Membre
Dernière intervention
28 juin 2008
-
Messages postés
23
Date d'inscription
mercredi 22 novembre 2000
Statut
Membre
Dernière intervention
28 juin 2008
-
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

Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
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.
Messages postés
1423
Date d'inscription
mardi 14 décembre 2004
Statut
Membre
Dernière intervention
29 décembre 2012
4
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
Messages postés
23
Date d'inscription
mercredi 22 novembre 2000
Statut
Membre
Dernière intervention
28 juin 2008

J'utilise ce script en local pour le développer.

Qu'entends tu par "pas les bonnes choses au bon endroit" ?
Messages postés
1423
Date d'inscription
mardi 14 décembre 2004
Statut
Membre
Dernière intervention
29 décembre 2012
4
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
Messages postés
23
Date d'inscription
mercredi 22 novembre 2000
Statut
Membre
Dernière intervention
28 juin 2008

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é ?
Messages postés
1423
Date d'inscription
mardi 14 décembre 2004
Statut
Membre
Dernière intervention
29 décembre 2012
4
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
Messages postés
23
Date d'inscription
mercredi 22 novembre 2000
Statut
Membre
Dernière intervention
28 juin 2008

var_dump me retourne en valeur boolléen TRUE.
Messages postés
1423
Date d'inscription
mardi 14 décembre 2004
Statut
Membre
Dernière intervention
29 décembre 2012
4
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
Messages postés
23
Date d'inscription
mercredi 22 novembre 2000
Statut
Membre
Dernière intervention
28 juin 2008

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...
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
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.
Messages postés
23
Date d'inscription
mercredi 22 novembre 2000
Statut
Membre
Dernière intervention
28 juin 2008

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.
Messages postés
1423
Date d'inscription
mardi 14 décembre 2004
Statut
Membre
Dernière intervention
29 décembre 2012
4
$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
Messages postés
23
Date d'inscription
mercredi 22 novembre 2000
Statut
Membre
Dernière intervention
28 juin 2008

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

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...
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
CURLOPT_RETURN_TRANSFER je crois.
Et ça renvoie l'output de la page appelée.
Messages postés
23
Date d'inscription
mercredi 22 novembre 2000
Statut
Membre
Dernière intervention
28 juin 2008

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...
Messages postés
23
Date d'inscription
mercredi 22 novembre 2000
Statut
Membre
Dernière intervention
28 juin 2008

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.
Messages postés
1423
Date d'inscription
mardi 14 décembre 2004
Statut
Membre
Dernière intervention
29 décembre 2012
4
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
Messages postés
23
Date d'inscription
mercredi 22 novembre 2000
Statut
Membre
Dernière intervention
28 juin 2008

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.