Echapper un mot avec preg_match

Echapper un mot avec preg_match - PHP - Programmation

Marsh Posté le 29-12-2003 à 17:14:36    

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:

Reply

Marsh Posté le 29-12-2003 à 17:14:36   

Reply

Marsh Posté le 29-12-2003 à 18:19:06    

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

Reply

Marsh Posté le 29-12-2003 à 18:38:10    

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] => )


 
!!

Reply

Marsh Posté le 29-12-2003 à 18:42:34    

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
Reply

Marsh Posté le 29-12-2003 à 18:50:38    

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. ?>


Reply

Marsh Posté le 29-12-2003 à 18:52:08    

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. ?>

Reply

Marsh Posté le 29-12-2003 à 19:38:41    

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. ?>

Reply

Sujets relatifs:

Leave a Replay

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