2009-09-30 10 views
0

Ok, j'ai une page avec quelque chose comme ça (j'ai ajouté 'scrapehere' chaîne pour faciliter la navigation, cette page n'est pas 100% html correct et il a deux champs identiques avec . différentes valeurs non, je ne peux pas le réparer parce qu'il est cm que je utilise et je pense que ce serait trop compliqué pour moi de faire):scrape & regex match ne fonctionne pas

scrapehere<input type="hidden" id="_someid" name="_somename" value="value"/> 

J'essaie d'obtenir la valeur cachée. J'ai donc écrit ce script:

<?php 
$data = file_get_contents('scrape-test.html'); 
$regex = '/scrapehere<input type="hidden" id="_someid" name="_somename" value="(.+?)"/'; 
preg_match($regex,$data,$match); 
var_dump($match); 
echo $match[1]; 
?> 

Mais au lieu de mon script de valeur Sorties ceci:

array(2) { [0]=> string(74) "scrapehere string(5) "value" } value 

Quel est le problème avec elle, pourquoi ne pas juste valeur d'impression? L'a-t-il déjà sauvé quelque part mais mon écho est faux? Je veux que la sortie soit juste value.

+0

Je pense que quelque chose s'est mal passé avec le signe Thomas

+0

peut-être que c'est ... alors comment puis-je résoudre ce problème? des idées? – Phil

+0

Vous voulez probablement aussi ([^ "] *) au lieu de" valeur " –

Répondre

1
var_dump($match); 
echo $match[1]; 

ces deux lignes produisent des données. var_dump sort un tableau dont le premier élément contient une balise d'entrée, qui n'est pas affichée dans le navigateur car elle est cachée! Par conséquent, si vous souhaitez que la sortie soit uniquement 'value', supprimez var_dump($match); de votre code et laissez echo faire le travail.

+0

wow, fonctionne parfaitement! – Phil

0

Je l'ai fait:

<?php 
$data = 'scrapehere<input type="hidden" id="_someid" name="_somename" value="value"/>'; 
$regex = '/scrapehere<input type="hidden" id="_someid" name="_somename" value="value"/'; 
preg_match($regex,$data,$match); 
print_r($match); 
echo $match[1]; 
?> 

Je reçois ceci:

Array 
(
    [0] => scrapehere<input type="hidden" id="_someid" name="_somename" value="value" 
) 

Exactement ce que j'attendais. Quel est le contenu de votre fichier scrape-test.html?

+0

il a forme et à l'intérieur de cette forme il y a ce champ: scrapehere Phil