2009-10-19 16 views
14

Ciao Vorrei usare preg_match in PHP per analizzare il "testo desiderato" fuori quanto segue da un documento HTMLpregnenolone partita testo in php tra i tag html

<p class="review"> Desired text </p> 

Normalmente avrei usato simple_html_dom per queste cose ma in questa occasione non può essere usato (l'elemento sopra non appare in tutti i tag div desiderati, quindi sono costretto a usare questo approccio per tenere traccia esattamente di quando non appare e quindi aggiustare il mio array da simple_html_dom di conseguenza) .

In ogni caso, questo risolverebbe il mio problema.

Grazie mille.

risposta

54
preg_match("'<p class=\"review\">(.*?)</p>'si", $source, $match); 
if($match) echo "result=".$match[1]; 
+1

Funziona perfettamente. Mi ha salvato diverse ore che hai lì, grazie mille per quello. –

+1

Siete i benvenuti :) – serg

+0

Non è probabile che questo venga superato? Vedi la mia risposta qui sotto. –

6

Che cosa succede se la stringa si sta confrontare non è più linee e si è:

<p class="review"> Desired text1 </p> 
<p class="review"> Desired text2 </p> 
<p class="review"> Desired text3 </p> 

Questo modello corrisponde a una volta, e la partita sarebbe tutto nella stringa.

Penso che un modello migliore è:

"'<p class=\"review\">([^<]*)</p>'si" 
+0

sì, grazie, ho provato materiale per le ultime 2 ore e ho finalmente capito che le scorte vengono visualizzate con JavaScript, dopo il caricamento della pagina: ((quindi, ecco perché la sceneggiatura non funzionava grazie a tutti –

+0

Sicuramente la risposta giusta. – user1645377

10

se si desidera tornare più corrispondenze quindi necessario utilizzare preg_match_all(). Quindi esegui il loop del secondo gruppo di risultati ($ match [1]) per ottenere solo il contenuto tra i tag.

$source = "<p class=\"review\"> Desired text1 </p>". 
"<p class=\"review\"> Desired text2 </p>". 
"<p class=\"review\"> Desired text3 </p>"; 


    preg_match_all("'<p class=\"review\">(.*?)</p>'si", $source, $match); 

    foreach($match[1] as $val) 
    { 
     echo $val."<br>"; 


    } 

Outputs: 

Desired text1 
Desired text2 
Desired text3