Récupérer valeur entre deux balises

Récupérer valeur entre deux balises - PHP - Programmation

Marsh Posté le 06-06-2013 à 11:12:37    

Bonjour,
 
Je dois récupérer, pour un gain de temps, la valeur d'un compteur dans une page html.
 
En fait, nous avons plusieurs copieurs dans note société et j'aimerai récupérer le compteur de copie d'une imprimantes en PHP.
 
J'ai trouvé ceci sur le net :  

Code :
  1. <?php
  2. function get_file_title($file){
  3. $cont = file_get_contents($file);
  4. preg_match( "/<title>(.*)<\/title>/i", $cont, $match );
  5. return strip_tags($match[0]);
  6. }
  7. echo get_file_title("http://xxxx.html" );
  8. ?>


 
ce code marche très bien pour récupérer le titre, mais lorsque je veux récupérer la valeur d'une ma balise ça ne marche pas.
voici la balise en question :

Code :
  1. <tr>
  2. <td width=60%>Total Impressions</td>
  3. <td width=5%>207</td>
  4. <td width=35%>Impressions</td>
  5. </tr>


je dois récupérer la valeur 207 de la balise <td width=5%>
 
comment puis-je adapter le code pour que cela fonctionne ? Merci !

Reply

Marsh Posté le 06-06-2013 à 11:12:37   

Reply

Marsh Posté le 06-06-2013 à 11:27:25    

recep a écrit :

Bonjour,
 
Je dois récupérer, pour un gain de temps, la valeur d'un compteur dans une page html.
 
En fait, nous avons plusieurs copieurs dans note société et j'aimerai récupérer le compteur de copie d'une imprimantes en PHP.
 
J'ai trouvé ceci sur le net :  

Code :
  1. <?php
  2. function get_file_title($file){
  3. $cont = file_get_contents($file);
  4. preg_match( "/<title>(.*)<\/title>/i", $cont, $match );
  5. return strip_tags($match[0]);
  6. }
  7. echo get_file_title("http://xxxx.html" );
  8. ?>


 
ce code marche très bien pour récupérer le titre, mais lorsque je veux récupérer la valeur d'une ma balise ça ne marche pas.
voici la balise en question :

Code :
  1. <tr>
  2. <td width=60%>Total Impressions</td>
  3. <td width=5%>207</td>
  4. <td width=35%>Impressions</td>
  5. </tr>


je dois récupérer la valeur 207 de la balise <td width=5%>
 
comment puis-je adapter le code pour que cela fonctionne ? Merci !


Voici le code que j'ai utilisé :

Code :
  1. function get_file_title($file){
  2. $cont = file_get_contents($file);
  3. preg_match("/<td width=5%>(.*)</td>/i", $cont, $match );
  4. return strip_tags($match[0]);
  5. }
  6. echo get_file_title("http://xxxx.html" );


voici l'erreur que j'ai :

Code :
  1. Warning: preg_match() [<a href='function.preg-match'>function.preg-match</a>]: Unknown modifier 't' in compteur.php on line 4
  2. Call Stack
  3. # Time Memory Function Location
  4. 1 0.0003 670840 {main}( ) ..\compteur.php:0
  5. 2 0.0003 670952 get_file_title( ) ..\compteur.php:7
  6. 3 0.0605 678520 preg_match ( ) ..\compteur.php:4


Reply

Marsh Posté le 06-06-2013 à 11:56:37    

Le message d'erreur est pourtant très explicite.

Citation :

preg_match("/<td width=5%>(.*)</td>/i", $cont, $match );


A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 06-06-2013 à 12:18:57    

gilou a écrit :

Le message d'erreur est pourtant très explicite.

Citation :

preg_match("/<td width=5%>(.*)</td>/i", $cont, $match );


A+,


je ne comprend pas là?
 
je dois faire quoi? enlever les barres obliques ?

Reply

Marsh Posté le 06-06-2013 à 14:43:08    

recep a écrit :

je ne comprend pas là?

Ça saute pourtant aux yeux, une erreur aussi basique.

recep a écrit :

je dois faire quoi?

Ben apprendre un minimum le PHP en lisant les docs de base, peut être... Parce que manifestement, ce qu'est une expression régulière, vous avez pas trop l'air de connaitre, sinon vous auriez tout de suite su qu'un / a l'intérieur d'une expression régulière qui démarre avec un /, faut un signe spécial avant [lequel? ça figure dans toute doc de base], sinon il est pris comme la marque de fin de l'expression régulière (ce qui se produit dans votre cas)
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 06-06-2013 à 16:16:09    

gilou a écrit :

Ça saute pourtant aux yeux, une erreur aussi basique.


 

gilou a écrit :

Ben apprendre un minimum le PHP en lisant les docs de base, peut être... Parce que manifestement, ce qu'est une expression régulière, vous avez pas trop l'air de connaitre, sinon vous auriez tout de suite su qu'un / a l'intérieur d'une expression régulière qui démarre avec un /, faut un signe spécial avant [lequel? ça figure dans toute doc de base], sinon il est pris comme la marque de fin de l'expression régulière (ce qui se produit dans votre cas)
A+,


Merci, j'avais oublié le \ avant le / en recopiant dans ma balise </td>, maintenant ça fonctionne...  
 
ps: je suis un simple débutant en php, la prochaine fois je ferais plus de recherches avant de demander sur un Forum... :sweat:

Reply

Marsh Posté le 06-06-2013 à 17:52:01    

Le principe de ce forum, c'est d'aider, ce que j'ai fait en vous indiquant précisément l'erreur, mais pas de donner la solution toute faite. Vous obliger a une certaine autonomie dans la recherche de solutions, c'est aussi une aide, mais d'un autre genre, à plus long terme: vous faire prendre les bonnes habitudes.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Sujets relatifs:

Leave a Replay

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