2010-08-23 8 views
0

J'essaie d'extraire toutes les URL et images pertinentes d'une page et les mettre dans un tableau, le code ci-dessous fonctionne bien, sauf qu'il sort la première paire encore et encore pour le nombre numériquement correct de fois. J'ai pensé que je faisais peut-être des erreurs en spécifiant XPATHs mais je l'ai testé sur 3 sites différents avec le même résultat à chaque fois. Il est clair que le code n'est pas correct, mais je n'ai pas été en mesure de l'affiner jusqu'à la partie incriminée. Et avant que quelqu'un suggère d'utiliser regex, c'est quelque chose que je ferais habituellement mais je préférerais utiliser XPATH maintenant si possible.PHP DOMXPATH & Array

Répondre

1

Étant donné query("//div[@class=\"productImg\"]/a/img/@src",$item) il semble que vous êtes désireux d'effectuer une requête par rapport-$item. Vous êtes très près de là, mais pas tout à fait.

Votre requête commence par //div qui signifie chercher tous les <div> nœuds qui sont descendants du document racine et satisfont la partie restante de la requête. L'endroit clé où vous tombez est que cette expression est, comme mentionné, de la racine du document.

Pour sélectionner le noeud contextuel, vous devez commencer avec l'expression . telles que .//div correspondrait à tous les <div> nœuds qui sont descendant à partir du noeud contextuel (à savoir votre $item).

+0

Vous avez raison, merci! –

0

Il y a trop de suppositions sur ce à quoi ressemble votre HTML, mais un problème que je peux déceler immédiatement est la partie -> item (0). Ce 0 doit refléter l'itération en question.

En supposant que les éléments de $ auront toujours des touches numériques:

foreach($items as $key => $item) { 
..... item)->item($key)->nodeValue; 
}