2017-01-19 9 views
1

я хочу, чтобы получить все классы HTML, которые являются вип, и печать каждого результата Випpreg_match_all найти текст между двумя словами, печать

$text = "<enty> hello baby, we love osama:) That means 2016 set a global heat record<enty2016>for the third year in a row</enty2016>according to NOAA and NASA, who held a joint press conference on Wednesday to discuss the record. <endentry> <enty2016>Temperatures over the Earth's continents and oceans in 2016 were 1.1 degree Celsius (1.98 degrees Fahrenheit) </enty2016>above the pre-industrial average, according to the WMO. That means we are already a <endline>majority of the way to the 1.5-degree warming goal <endenty> "; 

Я хочу напечатать все данные в enty2016s

preg_match("/<enty2016>(.*?)<\/enty2016>/is", $html, $matches); 
foreach($matches[1] as $enty2016s){ 
echo $enty2016s; 
} 
+1

используйте DOM, а не регулярное выражение. –

+0

somtimes i am not search html – newuser0250

+0

ваш пример html, если у вас есть другие примеры, вы должны опубликовать их. – nogad

ответ

1

I будет использовать DOMDocument в сочетании с DOMXPath:

$dom = new DOMDocument; 
$dom->loadHTML($html); 

$xp = new DOMXPath($dom); 
$divNodeList = $xp->query('//div[@class="vip"]/text()'); 

foreach ($divNodeList as $divNode) { 
    echo $divNode->nodeValue . PHP_EOL; 
} 
+0

что, если имя класса имеет разрыв строки в нем? данных вип-URL = "/ v.index" класс =» поисковых пункт регулярного объявления – newuser0250

+0

www.kijiji.ca/b-cars-vehicles/british-columbia/ford-carproof/k0c27l9007 – newuser0250

+1

имена HTML класса не имеют разрывов строк или пробелов. Атрибут класса, который содержит несколько классов, может иметь пробелы, в этом случае изменить предикат запроса xpath с помощью функции 'contains'. –