Получить текст div, который содержит более одного символа

Представьте, что мы хотим получить div,span,p и т. Д. HTML-страницы, в которой имя класса ИЛИ идентификатора этого содержит некоторые ключевые слова, такие как:

one & two & three

Например, у меня есть этот HTML:

<div class="this_one">
  Need this !
</div>
<div id="some_three">
  Need this again !
</div>
<span id="two_this">
  Need again
</span>
<p class="NOT">
Not want this
</p>

Я имею в виду, я хочу получить текст внутри специальных тегов, таких как (div,p,span), что их идентификатор или класс содержит мои слова, такие как (один, два,...)

Как их обнаружить?

Например, с simpledom, или же PHPDOMили любым другим способом.

5 ответов

Решение

Если вы хотите использовать PHP, то вы можете использовать DOMDocument + DOMXpath, Я не гуру ат xpath но вы могли бы сделать что-то вроде:

$sample_markup = '<div class="this_one">
  Need this !
</div>
<div id="some_three">
  Need this again !
</div>
<span id="two_this">
  Need again
</span>
<p class="NOT">
Not want this
</p>';

$dom = new DOMDocument();
$dom->loadHTML($sample_markup);
$xpath = new DOMXpath($dom);

$search = $xpath->query('
    /html/body//*[
        contains(@class|@id, "one") or
        contains(@class|@id, "two") or
        contains(@class|@id, "three")
    ]
');

foreach($search as $node) {
    $value_inside_that_node = trim((string) $node->nodeValue);
    echo $value_inside_that_node . '<br/>';
}

Должен выводить:

Need this !
Need this again !
Need again

Вы можете использовать селекторы JQuery:

// elements who's class contains one
$('[class~="one"]').click(function() {
   // do stuff
});

Вы можете перебирать элементы по их классу, используя селекторы jquery, например:

$("[class=className]").each(function( index ) {
   // do something here
});

Чтобы выбрать несколько классов:

$("[class=className1], [class=className2]").each(function( index ) {
   // do something here
});

Вот пример JSFiddle: JSFiddle

Используя jquery, вы можете сделать это используя [name*="value"] селектор, например:

var patterns = ["one","two","three"];

var text = "";
for(i in patterns) {
    text += $("[id*='"+patterns[i]+"']").text();
    text += $("[class*='"+patterns[i]+"']").text();
 }

alert(text);

ДЕМО СКИДКА

Простой способ - получить все теги div,span или любой другой тег на странице. проверить содержание каждого и если совпадение найдено. используйте имя или идентификатор тега.

По этой ссылке делается нечто очень похожее. Итерация по всем тегам

Другие вопросы по тегам