CURL : Variable retourné par curl_exec() [Résolu]

St3fffff 23 Messages postés mercredi 22 novembre 2000Date d'inscription 28 juin 2008 Dernière intervention - 23 avril 2008 à 11:37 - Dernière réponse : St3fffff 23 Messages postés mercredi 22 novembre 2000Date d'inscription 28 juin 2008 Dernière intervention
- 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 !
Afficher la suite 

19 réponses

Répondre au sujet
malalam 10918 Messages postés lundi 24 février 2003Date d'inscription 2 mars 2010 Dernière intervention - 23 avril 2008 à 20:27
+3
Utile
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.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de malalam
Teclis01 1423 Messages postés mardi 14 décembre 2004Date d'inscription 29 décembre 2012 Dernière intervention - 23 avril 2008 à 11:45
0
Utile
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
Commenter la réponse de Teclis01
St3fffff 23 Messages postés mercredi 22 novembre 2000Date d'inscription 28 juin 2008 Dernière intervention - 23 avril 2008 à 11:53
0
Utile
J'utilise ce script en local pour le développer.

Qu'entends tu par "pas les bonnes choses au bon endroit" ?
Commenter la réponse de St3fffff
Teclis01 1423 Messages postés mardi 14 décembre 2004Date d'inscription 29 décembre 2012 Dernière intervention - 23 avril 2008 à 12:17
0
Utile
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
Commenter la réponse de Teclis01
St3fffff 23 Messages postés mercredi 22 novembre 2000Date d'inscription 28 juin 2008 Dernière intervention - 23 avril 2008 à 12:27
0
Utile
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é ?
Commenter la réponse de St3fffff
Teclis01 1423 Messages postés mardi 14 décembre 2004Date d'inscription 29 décembre 2012 Dernière intervention - 23 avril 2008 à 12:43
0
Utile
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
Commenter la réponse de Teclis01
St3fffff 23 Messages postés mercredi 22 novembre 2000Date d'inscription 28 juin 2008 Dernière intervention - 23 avril 2008 à 12:59
0
Utile
var_dump me retourne en valeur boolléen TRUE.
Commenter la réponse de St3fffff
Teclis01 1423 Messages postés mardi 14 décembre 2004Date d'inscription 29 décembre 2012 Dernière intervention - 23 avril 2008 à 13:07
0
Utile
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
Commenter la réponse de Teclis01
St3fffff 23 Messages postés mercredi 22 novembre 2000Date d'inscription 28 juin 2008 Dernière intervention - 23 avril 2008 à 13:14
0
Utile
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...
Commenter la réponse de St3fffff
malalam 10918 Messages postés lundi 24 février 2003Date d'inscription 2 mars 2010 Dernière intervention - 23 avril 2008 à 13:38
0
Utile
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.
Commenter la réponse de malalam
St3fffff 23 Messages postés mercredi 22 novembre 2000Date d'inscription 28 juin 2008 Dernière intervention - 23 avril 2008 à 13:54
0
Utile
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.
Commenter la réponse de St3fffff
Teclis01 1423 Messages postés mardi 14 décembre 2004Date d'inscription 29 décembre 2012 Dernière intervention - 23 avril 2008 à 14:36
0
Utile
$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
Commenter la réponse de Teclis01
St3fffff 23 Messages postés mercredi 22 novembre 2000Date d'inscription 28 juin 2008 Dernière intervention - 23 avril 2008 à 14:43
0
Utile
Ok j'ai compri, je vais chercher ! :)
Commenter la réponse de St3fffff
St3fffff 23 Messages postés mercredi 22 novembre 2000Date d'inscription 28 juin 2008 Dernière intervention - 23 avril 2008 à 15:05
0
Utile
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...
Commenter la réponse de St3fffff
malalam 10918 Messages postés lundi 24 février 2003Date d'inscription 2 mars 2010 Dernière intervention - 23 avril 2008 à 19:11
0
Utile
CURLOPT_RETURN_TRANSFER je crois.
Et ça renvoie l'output de la page appelée.
Commenter la réponse de malalam
St3fffff 23 Messages postés mercredi 22 novembre 2000Date d'inscription 28 juin 2008 Dernière intervention - 23 avril 2008 à 20:19
0
Utile
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...
Commenter la réponse de St3fffff
St3fffff 23 Messages postés mercredi 22 novembre 2000Date d'inscription 28 juin 2008 Dernière intervention - 23 avril 2008 à 20:23
0
Utile
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.
Commenter la réponse de St3fffff
Teclis01 1423 Messages postés mardi 14 décembre 2004Date d'inscription 29 décembre 2012 Dernière intervention - 24 avril 2008 à 09:29
0
Utile
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
Commenter la réponse de Teclis01
St3fffff 23 Messages postés mercredi 22 novembre 2000Date d'inscription 28 juin 2008 Dernière intervention - 24 avril 2008 à 09:57
0
Utile
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.
Commenter la réponse de St3fffff

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.