Page 1 sur 1

Extraire des informations

Posté : 07 août 2014, 19:18
par PaRaDiGm
Bonjour,

Bonjour, j'extraie des informations d'une page. Par exemple depuis cette page:

<ul class="tags">
<li><div class="tag"><a href="http://www.url1.com" title="url1">title 1</a></div></li>

<li><div class="tag"><a href="http://www.url2.com" title="url2">title 2</a></div></li>
</ul>

Je souhaiterai obtenir title 1,title 2.

J'ai ainsi codé:
$m=array();
preg_match('/<ul class="tags">(.*?)<\/ul>/ims',$buff,$m);
$info['tags']=trim(strip_tags($m[1]));
$cats=explode("\n",$info['tags']);
$cats=array_map('trim',$cats);
$info['tags']=implode(',',$cats);

Mais il y'a un problème au niveau de l'explode \n.

Lorsque je met: preg_split('/\s+/ à la place de l'explode cela donne title,1,title,2. J'ai aussi essayé avec \r mais cela ne marche pas non plus.

Merci pour votre aide.

Re: Extraire des informations

Posté : 10 août 2014, 14:37
par moogli
salut,


pourquoi faire des split sur les sauts de lignes ?

si tu veux récupérer les textes des liens autant utiliser directement une expression régulière qui cible la chose.

par exemple
<?php
preg_match_all("/<a href="(.*)" title="(.*)">(.*)<\/a>/i", $input_lines, $output_array);
ce qui donne

Code : Tout sélectionner

Array ( [0] => Array ( [0] => <a href="http://www.url1.com" title="url1">title 1</a> [1] => <a href="http://www.url2.com" title="url2">title 2</a> ) [1] => Array ( [0] => http://www.url1.com [1] => http://www.url2.com ) [2] => Array ( [0] => url1 [1] => url2 ) [3] => Array ( [0] => title 1 [1] => title 2 ) )

pour tester les expressions expressions régulières en live tu as pas mal d'outils comme http://www.phpliveregex.com/

@+

Re: Extraire des informations

Posté : 24 sept. 2014, 16:56
par PaRaDiGm
Merci pour votre réponse. Le preg_match_all marche mais j'ai ensuite du mal à séparer chaque information par une virgule et l'extraire. J'ai essayé:

$m=array();
preg_match_all("/<a href="(.*)" title="(.*)">(.*)<\/a>/i", $buff,$m);
$info['tags']=trim(strip_tags($m[3]));
$cats=array_map('trim',$cats);
$info['tags']=implode(',',$cats);

Mais cela ne marche pas. Il y'a beaucoup d'erreur notamment avec trim et array_map.

Re: Extraire des informations

Posté : 25 sept. 2014, 10:34
par arnaud69
En fait tu fais du grab de page ?... :roll: :roll:

Je vais te donner un lien, super mega top : http://simplehtmldom.sourceforge.net/

Très facile à utiliser, tut te casses pas la tête, suis bien les explications.

Re: Extraire des informations

Posté : 25 sept. 2014, 12:39
par PaRaDiGm
Merci pour ces informations mais tout le script a deja ete codé.

Je chercher juste à modifier ces quelques informations.

Re: Extraire des informations

Posté : 25 sept. 2014, 15:01
par tesmet
Mais cela ne marche pas. Il y'a beaucoup d'erreur notamment avec trim et array_map.
preg_match_all('/<a\s[^>]*>\s*(.*?)\s*<\/a>/is', $buff, $m);
$info['tags'] = implode(',', $m[1]);

Re: Extraire des informations

Posté : 25 sept. 2014, 15:34
par PaRaDiGm
Ca marche avec $info['tags'] = implode(',', $m[1]);

Merci beaucoup.