2010-09-25 6 views
0

Salut à tous j'ai un tableau ci-dessousPHP filtre Array expressions régulières

Array 
(
    [0] => http://api.tweetmeme.com/imagebutton.gif?url=http://mashable.com/2010/09/25/trailmeme/ 
    [1] => http://cdn.mashable.com/wp-content/plugins/wp-digg-this/i/gbuzz-feed.png 
    [2] => http://mashable.com/wp-content/plugins/wp-digg-this/i/fb.jpg 
    [3] => http://mashable.com/wp-content/plugins/wp-digg-this/i/diggme.png 
    [4] => http://ec.mashable.com/wp-content/uploads/2009/01/bizspark2.gif 
    [5] => http://cdn.mashable.com/wp-content/uploads/2010/09/web.png 
    [6] => http://mashable.com/wp-content/uploads/2010/09/Screen-shot-2010-09-24-at-10.51.26-PM.png 
    [7] => http://cdn.mashable.com/wp-content/uploads/2009/02/bizspark.jpg 
    [8] => http://feedads.g.doubleclick.net/~at/lxx00QTjYBaYojpnpnTa6MXUmh4/0/di 
    [9] => 
    [10] => http://feedads.g.doubleclick.net/~at/lxx00QTjYBaYojpnpnTa6MXUmh4/1/di 
    [11] => 
    [12] => http://feeds.feedburner.com/~ff/Mashable?i=0N_mvMwPHYk:j5Pmi_N-JQ8:D7DqB2pKExk 
    [13] => 
    [14] => http://feeds.feedburner.com/~ff/Mashable?i=0N_mvMwPHYk:j5Pmi_N-JQ8:V_sGLiPBpWU 
    [15] => 
    [16] => http://feeds.feedburner.com/~ff/Mashable?i=0N_mvMwPHYk:j5Pmi_N-JQ8:F7zBnMyn0Lo 
    [17] => 
    [18] => http://feeds.feedburner.com/~ff/Mashable?d=qj6IDK7rITs 
    [19] => 
    [20] => http://feeds.feedburner.com/~ff/Mashable?d=_e0tkf89iUM 
    [21] => 
    [22] => http://feeds.feedburner.com/~ff/Mashable?i=0N_mvMwPHYk:j5Pmi_N-JQ8:gIN9vFwOqvQ 
    [23] => 
    [24] => http://feeds.feedburner.com/~ff/Mashable?d=yIl2AUoC8zA 
    [25] => 
    [26] => http://feeds.feedburner.com/~ff/Mashable?d=P0ZAIrC63Ok 
    [27] => 
    [28] => http://feeds.feedburner.com/~ff/Mashable?d=I9og5sOYxJI 
    [29] => 
    [30] => http://feeds.feedburner.com/~ff/Mashable?d=CC-BsrAYo0A 
    [31] => 
    [32] => http://feeds.feedburner.com/~ff/Mashable?i=0N_mvMwPHYk:j5Pmi_N-JQ8:_cyp7NeR2Rw 
    [33] => 
    [34] => http://feeds.feedburner.com/~r/Mashable/~4/0N_mvMwPHYk 
) 

fondamentalement, je veux

  1. supprimer chaque élément de tableau vide
  2. de supprimer tous les éléments de tableau sans extensions ".jpg,.png,.gif" dans son nom;
  3. Enfin, supprimer les éléments de tableau contenant des mots-clés tels que "digg,fb,tweet,bizspark".

ont essayé ur code et il retourne par exemple salut, ive essayé le code ci-dessus ... elle retourne un tableau contenant les choses que je veux sortir. Salut, ive essayé le code ci-dessus ... il retourne un tableau contenant le truc que je veux sortir. )

Array ([5] => 
http://feedads.g.doubleclick.net/~at/W-z_kHMi30EtE1mpxK8NvMmNmeg/0/di 
[7] => 
http://feedads.g.doubleclick.net/~at/W-z_kHMi30EtE1mpxK8NvMmNmeg/1/di 
[9] => 
http://feeds.feedburner.com/~ff/Mashable?i=mEedXAp78pg:339cIishd6A:D7DqB2pKExk 
[11] => 
http://feeds.feedburner.com/~ff/Mashable?i=mEedXAp78pg:339cIishd6A:V_sGLiPBpWU 
[13] => 
http://feeds.feedburner.com/~ff/Mashable?i=mEedXAp78pg:339cIishd6A:F7zBnMyn0Lo 
[15] => 
http://feeds.feedburner.com/~ff/Mashable?d=qj6IDK7rITs 
[17] => 
http://feeds.feedburner.com/~ff/Mashable?d=_e0tkf89iUM 
[19] => 
http://feeds.feedburner.com/~ff/Mashable?i=mEedXAp78pg:339cIishd6A:gIN9vFwOqvQ 
[21] => 
http://feeds.feedburner.com/~ff/Mashable?d=yIl2AUoC8zA 
[23] => 
http://feeds.feedburner.com/~ff/Mashable?d=P0ZAIrC63Ok 
[25] => 
http://feeds.feedburner.com/~ff/Mashable?d=I9og5sOYxJI 
[27] => 
http://feeds.feedburner.com/~ff/Mashable?d=CC-BsrAYo0A 
[29] => 
http://feeds.feedburner.com/~ff/Mashable?i=mEedXAp78pg:339cIishd6A:_cyp7NeR2Rw 
[31] => 
http://feeds.feedburner.com/~r/Mashable/~4/mEedXAp78pg 
)) 

)

je voudrais revenir par exemple à partir du premier exemple

[5] => http://cdn.mashable.com/wp-content/uploads/2010/09/web.png 
    [6] => http://mashable.com/wp-content/uploads/2010/09/Screen-shot-2010-09-24-at-10.51.26-PM.png 

des idées?


Salut gzip i ont modifié le code et im obtenir de meilleurs résultats

function url_array_filter($url) 
{ 
    static $words = array('digg', 'fb', 'tweet', 'bizspark','feedburner','feedads','CountImage'); 
    static $extens = array('.jpg', '.png', '.gif'); 
    $ret = true; 
    if (!$url) { 
     $ret = false; 
    } elseif (str_replace($words, '', $url) != $url) { 
     $ret = false; 
    } else { 
     $path = parse_url($url, PHP_URL_PATH); 
     if (in_array(substr($path, -4), $extens)) { 
      $ret = false; 
     } 
    } 
    return $ret; 
} 

mon problème vient maintenant avec la sortie. par exemple

Array ([0] => http://cdn.dzone.com/images/thumbs/120x90/491551.jpg' style='width:120;height:90;float:left;vertical-align:top;border:1px solid) 

Array ([0] => http://cdn.dzone.com/images/thumbs/120x90/490913.jpg' style='width:120;height:90;float:left;vertical-align:top;border:1px solid) 

Je veux seulement l'URL. Je pense que j'ai le problème avec l'extraction des urls du contenu original. Lemme poster un lien vers la question origial et ce que je fais.

RSS Feeds and image extraction indepth

je veux simplement l'URL. Je pense à partir de ce lien .... getImagesUrl() peut-être gâcher. Je vais essayer d'utiliser parse_url pour ramener l'URL correcte. Lemme savoir si im sur la bonne voie. im très proche de gérer en tirant urls d'image de flux rss avec Magpie analysé


Ok GZip, c'est la modification et l'ajout ive ajouté à ur code ... 95% des œuvres !! génial. bien que je reçois des résultats drôles affichage im ci-dessous

function url_array_filter($url) 
{ 
    static $words = array('digg', 'fb', 'tweet', 'bizspark','feedburner','feedads','CountImage','fuelbrand'); 
    static $extens = array('.jpg', '.png', '.gif'); 
    $ret = true; 
    if (!$url) { 
     $ret = false; 
    } elseif (str_replace($words, '', $url) != $url) { 
     $ret = false; 
    } else { 
     $path = parse_url($url, PHP_URL_PATH); 
     if (in_array(substr($path, -4), $extens)) { 
      $ret = false; 
     } 
    } 
    return $ret; 
} 

function cleanURL($a_url) 
    { 
    $ret=array(); 
    foreach ($a_url as $c) 
     { 
     $a=parse_url($c, PHP_URL_SCHEME).'://'.parse_url($c, PHP_URL_HOST).parse_url($c, PHP_URL_PATH);  
     $a=explode("'",$a); 
     $ret[]=$a[0]; 
     } 
    return $ret;   
    } 

exemple d'utilisation. $ this-> getImagesUrl ($ c); ci-dessous renvoie les résultats dans la première question.

    foreach($content as $c) { 
         // get the images in content 
         $arr = $this->getImagesUrl($c); 
         $arr = array_filter($arr, 'url_array_filter'); 
         } 
        $ret=cleanURL($arr); 
        if (count($ret)>0) 
         { 
         print_r($ret);         
         echo "<br/><br/>"; 
         } 

jusqu'à ce point presque tout fonctionne très bien, mais je continue à obtenir des mauvais résultats comme

Array ([0] => http://cdn.mashable.com/wp-content/uploads/2010/02/ipad-side-) 
Array ([0] => http://mrg.bz/FZtr2k [1] => http://mrg.bz/IDkx4w) 

personnes que nous y sommes presque ...toutes les idées

+2

À quoi ressemble votre code jusqu'à maintenant? –

+0

Je n'ai aucune idée de l'utilisation des expressions régulières ... donc je ne peux pas aller plus loin. tout ce que je peux probablement faire en ce moment est de supprimer les éléments de tableau vides –

+1

Vous n'avez pas besoin d'expressions régulières. Soyez créatif avec [stristr] (http://nl2.php.net/manual/en/function.stristr.php) et les fonctions de comparaison. – Lekensteyn

Répondre

6

En utilisant, par exemple, array_filter() vous donnera la flexibilité et la facilité d'entretien (évolution des besoins, de-mise sur écoute, etc.):

function url_array_filter($url) 
{ 
    static $words = array('digg', 'fb', 'tweet', 'bizspark'); 
    static $extens = array('.jpg', '.png', '.gif'); 
    $ret = true; 
    if (!$url) { 
     $ret = false; 
    } elseif (str_replace($words, '', $url) != $url) { 
     $ret = false; 
    } else { 
     $path = parse_url($url, PHP_URL_PATH); 
     if (in_array(substr($path, -4), $extens)) { 
      $ret = false; 
     } 
    } 
    return $ret; 
} 

$arr = array_filter($arr, 'url_array_filter'); 
print_r($arr); 

(Works pour le tableau donné, mais peut besoin de modifications, c'est le code démo.)

+1

La modification de substr ($ path, -4) en strrchr ($ path, '.') Supprimera la constante entière. – GZipp

3
foreach ($array as $key => $value) { 
    if (
     empty($value)|| 
     (preg_match('#^http:\/\/(.*)\.(gif|png|jpg)$#i', $value) == 0)|| 
     (preg_match('#(tweet|bizspark)#i', $value) > 0) 
    ) { 
     unset($array[$key]); 
    } 
}