Extraire des informations

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Extraire des informations

Re: Extraire des informations

par PaRaDiGm » 25 sept. 2014, 15:34

Ca marche avec $info['tags'] = implode(',', $m[1]);

Merci beaucoup.

Re: Extraire des informations

par tesmet » 25 sept. 2014, 15:01

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

par PaRaDiGm » 25 sept. 2014, 12:39

Merci pour ces informations mais tout le script a deja ete codé.

Je chercher juste à modifier ces quelques informations.

Re: Extraire des informations

par arnaud69 » 25 sept. 2014, 10:34

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

par PaRaDiGm » 24 sept. 2014, 16:56

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

par moogli » 10 août 2014, 14:37

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/

@+

Extraire des informations

par PaRaDiGm » 07 août 2014, 19:18

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.