Получить текст 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
});
Используя 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 или любой другой тег на странице. проверить содержание каждого и если совпадение найдено. используйте имя или идентификатор тега.
По этой ссылке делается нечто очень похожее. Итерация по всем тегам И пройди Разобрать HTML div ID включает все внутреннее содержимое Разбор PHP DOM для доступа к элементам внутри определенного идентификатора div