Соскоб экрана — PHP простоhtmldom только для чтения видимого текста

У меня есть следующий формат HTML

 <p>This is viewable <span style="display:none">This is not viewable</span></p>

Я хочу использовать php simplehtmldom для извлечения только части «Это доступно для просмотра».

Есть ли способ сделать это напрямую?

0

Решение

Конечно, вы можете просто удалить этот текст:

$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
0

Другие решения

Нет, SimpleHTMLDOM — это просто анализатор DOM, он не обрабатывает атрибуты каким-либо осмысленным образом, не говоря уже об обработке встроенных стилей. Чтобы правильно делать то, что вы намереваетесь достичь, он также должен иметь возможность обрабатывать расширенные встроенные стили, такие как style="anyother:'attribute';display:none" и альтернативные способы сокрытия контента, такие как visibility:hidden а также opacity:0или блестящие вещи, такие как -webkit-transform:rotateY(90deg),

В двух словах, нет простого способа достичь желаемого результата.

0

По вопросам рекламы [email protected]