2012-08-05 4 views
1

je crée un tableau d'URL d'image:confusion tableau PHP/array_unique

$matches = array(); 

preg_match_all('#(http://[^\s]*?\.jpg)#i',$html, $matches); 

$matches2 = array_unique($matches); // get unique 

echo "there are ".count($matches2)." items!"; 

print_r($matches); 

Le comte me montre que j'ai un résultat, mais le résultat est quelque chose comme ce qui suit:

there are 1 items! 

Array ([0] => 

Array ( 
[0] => http://testmenow.com/248472104410838590_J3o6Jq50_b.jpg 
[1] => http://testmenow.com/cirrow_1338328950.jpg 
[2] => http://testmenow.com/madi0601-87.jpg 
[3] => http://testmenow.com/swaggirll-4.jpg 
[4] => http://testmenow.com/erythie-35.jpg)) 

Par la suite , lorsque je tente d'imprimer chaque image à partir de l'URL que je ne reçois que le premier dans le tableau lorsque vous utilisez ceci:

foreach ($matches2 as $image) { 

echo '<img src='.$image[0].' width=200 height=200>'; 

} 

Je nè ed pour être en mesure d'imprimer chaque élément de tableau séparément - Je pense que je confond quelque chose quelque part mais deux heures plus tard ... toujours au même endroit

Répondre

4

preg_match_all retourne un tableau pour chaque submatch. Cela signifie que $matches[0] est le tableau qui contient votre résultat attendu. Votre code devrait ressembler à ceci:

preg_match_all('#http://[^\s]*?\.jpg#i',$html, $matches); 
$matches2 = array_unique($matches[0]); // get unique 
echo "there are ".count($matches2)." items!"; 

foreach ($matches2 as $image) { 
    echo '<img src='.$image.' width=200 height=200>'; 
} 

Vous pouvez omettre les crochets dans votre regex car cela est déjà trouvé.

+0

merci - +1 pour cela - cependant, la ligne d'écho devrait lire: echo ''; comme l'image d'impression [0] imprime juste la lettre h –

+0

@DarrenSweeney Vous avez raison copié cela et l'a manqué :) Merci. – flec