Recuperer un mot n d'une page

Recuperer un mot n d'une page - PHP - Programmation

Marsh Posté le 19-03-2008 à 22:17:05    

Bonjour,
 
Prenons une page php ultra simple:
aucune balise (même pas de <html> )
Juste un texte.
 
Disons que cette page est sur un serveur distant.
Comment récupérer le 5eme mot du texte(exemple) de cette page sans la télécharger (si possible)?
 
J'ai entendu parler des regexp, mais sans balises comment faire?
 
Merci
 

Reply

Marsh Posté le 19-03-2008 à 22:17:05   

Reply

Marsh Posté le 19-03-2008 à 22:38:50    

Tu utilises les espaces comme délimiteur.


---------------
Directeur Technique (CTO)
Reply

Marsh Posté le 20-03-2008 à 10:05:54    

exeed a écrit :


Disons que cette page est sur un serveur distant.
Comment récupérer le 5eme mot du texte(exemple) de cette page sans la télécharger (si possible)?


Comment ça sans la télécharger? [:pingouino]
Tu veux savoir ce qu'il y a dans un fichier sans jamais récupérer le fichier?[:roane]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 20-03-2008 à 12:07:56    

Si c'est pas possible tant pis ,je télécharge (je pensais pouvoir me connecter ou un truc comme çà)
 
Donc j'ai un peu regardé , pour prendre le
 

Code :
  1. <?php
  2. $texte="La valeur que je veux capturer est: 78996";
  3. print $texte;
  4. echo '\n';
  5. $texte=ereg_replace("#\w \w \w \w \w \w \w: ([0-9]*)$#","$1",$texte);
  6. print $texte;
  7. ?>


 
 
Ca remplace $texte par un nombre variables de chiffres situes en fin de chaine , non?
 
(Cela ne fonctionne pas évidemment :))
Une solution?


Message édité par exeed le 20-03-2008 à 12:08:19
Reply

Marsh Posté le 20-03-2008 à 12:09:47    

M'enfin pourquoi batailler? Tu récupères ton fichier, tu explode() le contenu avec les espaces/retours à la ligne comme séparateurs, et tu lis la nième valeur du tableau obtenu?


Message édité par skeye le 20-03-2008 à 12:10:03

---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 20-03-2008 à 12:19:39    

:) En effet...merci pour cette solution ;)
 
Maintenant si je veux lire le 57 du (57), je fais  
$texte="(57)";';
$texte=ereg_replace("\(([[digits]]*)\)","$1",$texte); ??
 

Reply

Marsh Posté le 20-03-2008 à 14:06:18    

note:  utilise l'argument limit de explode


---------------
oui oui
Reply

Marsh Posté le 20-03-2008 à 14:07:02    

Bon j'ai un peu avancé depuis tout a l'heure mais j'ai tout de même un souci:
 
J'ai un id de session qui fonctionne sur une page.
 
Comment le "passer" c'est a dire "s'authentifier" sur la fameuse page a télécharger?
 
Pour le moment je fais ca:
 
<?php session_id('id connu');  
session_start();
$url=url.session_name()."=".session_id();
$fp = fopen($url,"r" );  
$contenu="";
while(!feof($fp))
{
$contenu .= fgets($fp,1024);
}  
 
$lines = explode(" ", $contenu);
 
 
La page s'enregistre correctement, mais ce n'est pas la bonne , en effet le serveur m'envoie vers une page "Vous n'êtes pas authentifié"
 
Voila

Reply

Marsh Posté le 20-03-2008 à 15:09:25    

Utilises curl à la limite.


---------------
Debian Addict - Vista Victim .. - Etudiant Ingénieur [Le Pas-Blog - Relations Ecrites]
Reply

Marsh Posté le 20-03-2008 à 16:23:33    

C'est une idée :)
 
J'ai donc trouvé cette doc :http://julp.developpez.com/php/curl/
 
Je pourrai utiliser ce bout de code :

Code :
  1. function http_fetch_url($url, $timeout = 10, $userpwd = '')
  2. {
  3.     $ch = curl_init($url);
  4.     curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
  5.     curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
  6.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
  7.     if ($userpwd) {
  8.         curl_setopt($ch, CURLOPT_USERPWD, $userpwd);
  9.     }
  10.     $data = curl_exec($ch);
  11.     curl_close($ch);
  12.     return $data;
  13. }
  14. // Exemple d'utilisation :
  15. if (($content = fetch_url('http://www.monsite.fr/zone_privee/sqldump.php', 10, 'utilisateur:mot_de_passe')) === FALSE) {
  16.     die("Une erreur est survenue" );
  17. } else {
  18.     echo htmlentities($content);
  19. }


 
Combiné a une reutlisation d'une session :

Code :
  1. /**
  2. * Deuxième partie : réutilisation de la session sur une page tierce
  3. **/
  4. $ch = curl_init(PAGE_PRIVEE . $sid);
  5. curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
  6. curl_setopt($ch, CURLOPT_COOKIEFILE, realpath('cookie.txt'));
  7. $ret = curl_exec($ch);
  8. if ($ret === FALSE) {
  9.     die(curl_error());
  10. }
  11. curl_close($ch);
  12. echo $ret;


 
et a mon bout de code pour découper la string en mots.
 
Question: y a t'il une option de curl permettant de rentrer moi l'id de session php en lieu et place du cookie?
 
 
 

Reply

Marsh Posté le 20-03-2008 à 16:23:33   

Reply

Marsh Posté le 20-03-2008 à 16:27:47    

Euh, ce doit être faisable vu que c'est juste un stockage sous forme d'un fichier texte, tu pourrais émuler l'existence de ce fichier je pense.
Mais bon, tu risques de t'embêter pour rien ^^


---------------
Debian Addict - Vista Victim .. - Etudiant Ingénieur [Le Pas-Blog - Relations Ecrites]
Reply

Marsh Posté le 20-03-2008 à 18:28:43    

Comment ferais tu a ma place (plus simple :)) ?

Reply

Marsh Posté le 20-03-2008 à 18:31:05    

Bah utiliser le fichier cookie pour ton identification, et le réutiliser pour accéder aux données protégées.


---------------
Debian Addict - Vista Victim .. - Etudiant Ingénieur [Le Pas-Blog - Relations Ecrites]
Reply

Marsh Posté le 21-03-2008 à 11:01:36    

Ca ne fonctionne pas.  
 
Peut etre en modifiant le header (j'ai le numero de session).
 
J'ai teste un truc: j'arrive a me connecter a la page en faisant:
 
header(location:blabla?PHPSESSID=mon numero);
 
Mais fopen lui n'y arrive pas, une fonction plus a meme de realiser cela existerait elle?
 

Reply

Marsh Posté le 21-03-2008 à 14:41:40    

créer un socket complet à la limite et paramêtrer toi même tes headers ...


---------------
Debian Addict - Vista Victim .. - Etudiant Ingénieur [Le Pas-Blog - Relations Ecrites]
Reply

Marsh Posté le 21-03-2008 à 15:33:07    

avec curl tu peux faire un POST...
http://us3.php.net/manual/fr/function.curl-exec.php pour plus d'infos... je l'ai utilisé c'est tres pratique car tu peux te logguer sur un serveur distant, et recuperer les valeurs voulu...

Reply

Marsh Posté le 21-03-2008 à 16:50:00    

texaff a écrit :

avec curl tu peux faire un POST...
http://us3.php.net/manual/fr/function.curl-exec.php pour plus d'infos... je l'ai utilisé c'est tres pratique car tu peux te logguer sur un serveur distant, et recuperer les valeurs voulu...


C'est ce que je lui ai dis, mais il ne dois pas être très familier de php.
CURL permet GET et POST, donc bon, c'est aussi évolué qu'un navigateur (en soi ..)


---------------
Debian Addict - Vista Victim .. - Etudiant Ingénieur [Le Pas-Blog - Relations Ecrites]
Reply

Marsh Posté le 21-03-2008 à 23:21:50    

En fait j'ai juste omis de transmettre un cookie. (il en fallait deux, je n'en ai transmis qu'un)
 
Voila problème réglé, maintenant les regexp.... demain :)

Reply

Marsh Posté le 25-03-2008 à 09:29:34    

Bon finalement je suis passe en Perl , beaucoup plus simple pour faire ce genre de manipulations.
 
Je disais donc: les regexp!
Je récupère donc un contenu sur une page.
 
De la forme sqrt(nombre1)*pow(nombre2,nombre3)+nombre4
 
je veux récupérer les nombres, j'ai donc écrit cette chose:
 
if $res->content=~ /racine\((\d+\))\*(\d+)(?\d+)+(\d+)/
{
 
  quelque chose
 }  
 ce qui évidemment ne fonctionne pas.
 
Lorsqu'une parenthèse fait juste partie de la "forme" de la phrase, je l'échappe c'est bien ça?

Reply

Marsh Posté le 25-03-2008 à 12:19:53    

Ok :)  

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed