2013-03-07 3 views
5

Jak mogę zrobić, aby znaleźć zawartość tego div z preg_match <div class="lot-price-block">?preg_match znajdowanie treści między określonymi div z klasą

Zrobiłem coś takiego, ale nie można dostać nic:

$value=preg_match_all('/<div class=\"lot\-price\-block\">(.*)<\/div>/',$file_contents,$estimates); 
+0

'print_r ($ szacunki)' – str

+0

Problemem jest to, że nic powrót zapytanie .... wiem, jak go wyświetlić –

+2

Pierwsza zasada parsowania HTML za pomocą wyrażenia regularnego: [Nie analizowania HTML przy użyciu regex] (http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454) – SDC

Odpowiedz

14

Przede wszystkim spraw, aby twoje regex było mniej zachłanne, używając operatora ?. To sprawi, że nie dostaniesz więcej, niż myślisz, że dostaniesz. Kolejną rzeczą jest operator /s na końcu wyrażenia. Zakładam, że parsujesz plik HTML, który ma wiele nowych znaków linii "\n".

$value=preg_match_all('/<div class=\"lot\-price\-block\">(.*?)<\/div>/s',$file_contents,$estimates); 
+0

To dziękuje dziękuję ;-) –

+0

Przyjemność, aby pomóc –

+0

, ale jak uzyskać zawartość z div odniesienia, jak mam

Hello how are you
Chcę użyć unikalnego preg_match, który nie powinien się powtarzać. teraz wyodrębnij 'hello how you're' string używając id i class oba. –

0

Spróbuj tego:

$file_contents = '<div class="lot-price-block">Test content</div>'; 

$value=preg_match_all('/<div\s*class="lot\-price\-block"\s*>(?P<content>.*)<\/div>/',$file_contents,$estimates); 

echo "<pre>"; 
print_r($estimates); 

dostaniesz wszystkie dopasowanych treści w print_r($estimates['content']);

+0

Edytował kod, sprawdź teraz –

+0

, ale jak uzyskać zawartość z div odniesienia, jak mam

Hello how are you
Chcę użyć unikalnego preg_match, który nie powinien się powtarzać. teraz wyodrębnij 'hello how you're' string używając id i class oba. –