Как использовать простой HTML DOM получить Div внутренний текст - PullRequest
1 голос
/ 12 марта 2011
<div style="float: left; margin-top: 10px; font-family: Verdana; font-size: 13px; color: #404040;">innertext</div>

Как я могу получить доступ к внутреннему тексту div'ов, не имеющих class или id, но span, используя простой html dom php parser?Спасибо.

Ответы [ 4 ]

4 голосов
/ 12 марта 2011

Если стили согласованы, вы можете перебрать все элементы div в документе и отфильтровать их по стилю.

var divs = document.getElementsById("div");

for (var i = 0; i < divs.length; i++) {
    var div = divs[i];

    // skip the current div if its styles are wrong
    if (div.style.cssFloat !== "left"
     || div.style.marginTop !== "10px"
     || div.style.fontFamily !== "Verdana"
     || div.style.fontSize !== "13px"
     || div.style.color !== "#404040") continue;

    var text = div.innerText || div.textContent;

    // do something with text
}
3 голосов
/ 06 августа 2011

Вы можете использовать содержимое тега style, если там не указано id или class, например:

include('simple_html_dom.php');
$html = file_get_html('http://www.mysite.com/');
foreach($html->find('div[style="float: left; margin-top: 10px; font-family: Verdana; font-size: 13px; color: #404040;"]') as $e)
echo $e->innertext;
0 голосов
/ 12 марта 2011

Спасибо всем. Я слишком зависим от simple_html_dom, Бен Бланк, дай мне хороший путь. И я также попробовал регулярное выражение php, чтобы оно совпадало с div.

preg_match_all('/<div.*(style="float: left; margin-top: 10px; font-family: Verdana; font-size: 13px; color: #404040;").*>([\d\D]*)<\/div>/iU',$html,$match);
print_r($match); 
0 голосов
/ 12 марта 2011

Возможно, вы могли бы попытаться сопоставить некоторых из их родителей (для которых установлено class или id), а затем перейти DOM к нужному ребенку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...