Работа с phpQuery

844
.
OtherWorld

Есть html страничка (к примеру)

<div class = "list">
  <div class = "room">
    <div class = "user" style = "font-size: 1px;"></div>
    <div class = "user" style = "font-size: 2px;"></div>
    <div class = "user" style = "font-size: 3px;"></div>
  </div>
  <div class = "room">
    <div class = "user" style = "font-size: 4px;"></div>
    <div class = "user" style = "font-size: 5px;"></div>
    <div class = "user" style = "font-size: 6px;"></div>
  </div>
</div>


Нужно получить значения всех "style" в массив чтобы выглядело так
array(0=>'font-size: 1px;,font-size: 2px;,font-size: 3px;',1=>'font-size: 4px;,font-size: 5px;,font-size: 6px;')

c помощью phpQuery

У меня получается получить только первое значение из каждого "room"
.
Hey guys! Finally I'm gonna change status!?

Регуляркой можно, а лучше скачай библиотеку https://sourceforge.net/projec ... ldom/
Судя по всему тебе еще много что парсить придется)))

.

kantry, никогда не занимался парсингом, а тут понадобилось...
PHP Simple HTML DOM Parser и phpQuery как-то ооочень похожи. С первого взгляда...

.

kantry,

$pq = phpQuery::newDocument($str);

	$elem = $pq->find('div.room');
	
	foreach ($elem AS $value) {
		$value = pq($value);
		
		$style[] = $value->find('div.user')->attr('style');
	}
	
	$tpl->content .= print_r($style);
.
# kantry (22.07.2017 / 19:35)
Регуляркой можно
Регулярку дольше придётся изучать
Сейчас все эти либы довольно популярны для обработки html и т.п. документов, и мануал даже русскоязычный можно найти )
.

То есть никто не в курсе)))

.

ДоХтор, регулярку знаю =)

.
# OtherWorld (22.07.2017 / 19:55)
То есть никто не в курсе)))
Я точно не в курсе, т.к. не пользовался. Мне проще решать такие задачи с помощью регулярных выражений. Но если не ошибаюсь, наш Макс (Simba) в курсе, как ней пользоваться.
.
# OtherWorld (22.07.2017 / 19:57)
ДоХтор, регулярку знаю =)
Так и напиши на регулярке )
.

OtherWorld, такой массив тебе нужен?

Пример (+/-)
array(6) {
    [0]=> string(15) "font-size: 1px;"
    [1]=> string(15) "font-size: 2px;"
    [2]=> string(15) "font-size: 3px;"
    [3]=> string(15) "font-size: 4px;"
    [4]=> string(15) "font-size: 5px;"
    [5]=> string(15) "font-size: 6px;"
}
Если да, то вот пример
regex (+/-)
$str = '<div class = "list">
  <div class = "room">
    <div class = "user" style = "font-size: 1px;"></div>
    <div class = "user" style = "font-size: 2px;"></div>
    <div class = "user" style = "font-size: 3px;"></div>
  </div>
  <div class = "room">
    <div class = "user" style = "font-size: 4px;"></div>
    <div class = "user" style = "font-size: 5px;"></div>
    <div class = "user" style = "font-size: 6px;"></div>
  </div>
</div>';


$patt = '~style\s?=\s?"([^"]+)"~';
preg_match_all($patt, $str , $a);

echo '<pre>'; var_dump($a[1]); echo '</pre>';
Всего: 24