Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2229 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Echapper un mot avec preg_match

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Echapper un mot avec preg_match

n°598541
letouriste
Comme son nom l'indique ^^
Posté le 29-12-2003 à 17:14:36  profilanswer
 

Voila, depuis qq heures je me penche sur l'échappement d'un mot dans une regexp de type preg_match ...
 
Je veut extraire un lien ed2k d'un fichier .html qui contient donc tout un fouilli de code.
 
Pour le moment j'ai fait ceci:

Code :
  1. <?PHP
  2. $url = "C:\\file.html";
  3. $fd = fopen ($url, "r" );
  4.   while (!feof ($fd)) {
  5.     $buffer = fgets($fd, 4096);
  6. //    echo $buffer;
  7. // Schéma du proto ed2k:
  8. // ed2k://|file|nom_fichier|taille_fichier_en_octets|hash_32bits|/
  9. preg_match ("[.]", $buffer, $matches);
  10. for ($i=0; $i< count($matches[0]); $i++) {
  11.   echo $matches[0][$i]."<br>";
  12. }
  13.   }
  14.   fclose ($fd);
  15. ?>


 
Avec file.html qui contient plein de chose (fichier d'un certain site proposant certain liens ed2k...)
 
Donc je ne vois pas comment procéder pour faire sa...  :heink:  
Si vous avez une idée :bounce:

mood
Publicité
Posté le 29-12-2003 à 17:14:36  profilanswer
 

n°598579
karamilo
Posté le 29-12-2003 à 18:19:06  profilanswer
 

Code :
  1. preg_match("#ed2k://|(.*?)|(.*?)|([0-9]+)|(.*?)|/#", $buffer, $matches);
  2. print_r($matches);

n°598584
letouriste
Comme son nom l'indique ^^
Posté le 29-12-2003 à 18:38:10  profilanswer
 

Ok pour le masque, mais la fonction me retourne un truc byzard:

Code :
  1. Array ( [0] => [1] => ) Array ( [0] => [1] => ) Array ( [0] => [1] => ) Array ( [0] => [1] => ) Array ( [0] => [1] => ) Array ( [0] => [1] => ) Array ( [0] => [1] => ) Array ( [0] => [1] => ) Array ( [0] => [1] => ) Array ( [0] => [1] => ) Array ( [0] => [1] => ) Array ( [0] => [1] => ) Array ( [0] => [1] => ) Array ( [0] => [1] => ) Array ( [0] => [1] => ) Array ( [0] => [1] => ) Array ( [0] => [1] => ) Array ( [0] => [1] => ) Array ( [0] => [1] => ) Array ( [0] => [1] => ) Array ( [0] => [1] => ) Array ( [0] => [1] => ) Array ( [0] => [1] => ) Array ( [0] => [1] => ) Array ( [0] => [1] => ) Array ( [0] => [1] => ) Array ( [0] => [1] => )


 
!!

n°598585
karamilo
Posté le 29-12-2003 à 18:42:34  profilanswer
 

tu veux extraire le premier lien que tu trouve ou tous ?  
si tous, il faut preg_match_all
j'ai corrigé aussi, le | est un caractere special ;)
 

Code :
  1. preg_match("#ed2k://\|(.*?)\|(.*?)\|([0-9]+)\|(.*?)\|/#", $buffer, $matches);
  2.  
  3.   print_r($matches);


Message édité par karamilo le 29-12-2003 à 19:11:26
n°598596
letouriste
Comme son nom l'indique ^^
Posté le 29-12-2003 à 18:50:38  profilanswer
 

Y'a du mieux :)
Par contre maintenant sa me renvoi un truc du genre:

Code :
  1. /
  2. /
  3. /
  4. /
  5. /
  6. /
  7. /
  8. /
  9. ed2k://|file|Ouzo - Support Your Local Hardcorers (2003) - MP3 256kbps - RIP by sP4j3.rar|42718703|
  10. /
  11. /
  12. /
  13. /
  14. /
  15. /
  16. /
  17. /


 
Mais où est passer le hash ?!! lol
 
Voila mon code complet (avec la rectif pour le |)

Code :
  1. <?PHP
  2. $url = "C:\\file.html";
  3. $fd = fopen ($url, "r" );
  4.   while (!feof ($fd)) {
  5.     $buffer = fgets($fd, 4096);
  6. //    echo $buffer;
  7. // ed2k://|file|nom_fichier|taille_fichier_en_octet|hash_32bits|/
  8. preg_match_all("#ed2k://\|(.*?)\|(.*?)\|([0-9]+)\|(.*?)|/#", $buffer, $matches);
  9.  
  10.   for ($i=0; $i< count($matches[0]); $i++) {
  11.   echo $matches[0][$i]."<br>";
  12. }
  13.   fclose ($fd);
  14. ?>


n°598597
letouriste
Comme son nom l'indique ^^
Posté le 29-12-2003 à 18:52:08  profilanswer
 

Yes !!! le dernier | n'avais pas était echapper ;)
 

Code :
  1. <?PHP
  2. $url = "C:\\file.html";
  3. $fd = fopen ($url, "r" );
  4.   while (!feof ($fd)) {
  5.     $buffer = fgets($fd, 4096);
  6. //    echo $buffer;
  7. // ed2k://|file|nom_fichier|taille_fichier_en_octet|hash_32bits|/
  8. preg_match_all("#ed2k://\|(.*?)\|(.*?)\|([0-9]+)\|(.*?)\|/#", $buffer, $matches);
  9.  
  10.   for ($i=0; $i< count($matches[0]); $i++) {
  11.   echo $matches[0][$i]."<br>";
  12. }
  13.   fclose ($fd);
  14. ?>

n°598623
letouriste
Comme son nom l'indique ^^
Posté le 29-12-2003 à 19:38:41  profilanswer
 

Voila c'est fini, voila le code (sa peut servir à d'autre tarés ;) )

Code :
  1. <FORM METHOD="POST" ACTION="ed2k.php">
  2. <hr>
  3. <p align="center"><b>Fichier à extraire (*.*)</b>: <input type="file" name="url" size="80">
  4. <hr>
  5. <?PHP
  6. // Si aucun chemin de fichier n'est rentrer alors on arrête
  7. if ($url == "" ){
  8. echo "Rien à extraire!";
  9. die;
  10. }
  11. // On ouvre le fichier...
  12. $fd = fopen ($url, "r" );
  13.   while (!feof ($fd)) { // On lit dedans par tranche de 4096 octets
  14.     $buffer = fgets($fd, 4096);
  15. // On extrait tout les liens ed2k
  16. preg_match_all("#ed2k://\|(.*?)\|(.*?)\|([0-9]+)\|(.*?)\|/#", $buffer, $matches);
  17. // On tourne jusqu'a ce que le tableau soit vide
  18. for ($i=0; $i< count($matches[0]); $i++) {
  19. // On passe par un variable avant de créer le lien, sinon on se tape un parse error ;)
  20. $foo = $matches[0][$i];
  21. $test = "<a href=\"$foo\">$foo</a><br><hr>";
  22. echo $test;
  23. } // On ferme la boucle pour "for"
  24. } // Idem pour la lecture du fichier
  25. fclose ($fd); // On ferme le fichier
  26. // On dit merci karamilo ;)
  27. ?>


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Echapper un mot avec preg_match

 

Sujets relatifs
[resolu]preg_replace petit soucispetit soucis avec un preg_replace
un preg_replace qui refuse de marcherPreg_Replace
comment savoir si un preg_replace a remplacé quelque chose ?Les Masques et la fonction preg_replace [ - Job's Done - ] Merci beleg
strtr, preg_replace ou str_replace ?[PHP] comparatif vitesse strtr(), str_replace() et preg_replace()
Prob preg_match() - résolu 
Plus de sujets relatifs à : Echapper un mot avec preg_match


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)