У меня есть следующий формат HTML
<p>This is viewable <span style="display:none">This is not viewable</span></p>
Я хочу использовать php simplehtmldom для извлечения только части «Это доступно для просмотра».
Есть ли способ сделать это напрямую?
Конечно, вы можете просто удалить этот текст:
$str = '<p>This is viewable <span style="display:none">This is not viewable</span></p>';
$html = str_get_html($str);
foreach($html->find('[style*=display:none]') as $el){
$el->innertext = '';
}
echo $html->find('p', 0)->text();
// This is viewable
Нет, SimpleHTMLDOM — это просто анализатор DOM, он не обрабатывает атрибуты каким-либо осмысленным образом, не говоря уже об обработке встроенных стилей. Чтобы правильно делать то, что вы намереваетесь достичь, он также должен иметь возможность обрабатывать расширенные встроенные стили, такие как style="anyother:'attribute';display:none"
и альтернативные способы сокрытия контента, такие как visibility:hidden
а также opacity:0
или блестящие вещи, такие как -webkit-transform:rotateY(90deg)
,
В двух словах, нет простого способа достичь желаемого результата.