Здравствуйте, требуется помощь в написание регулярки для PHP preg_match
, нужно вытащить весь текст вместе с тегами (<table>
), которые имеют определенный класс (class="test"
), который в свое время может находится в любой очередности возможных атрибутов.
Например
<table class="test">
<tr>
<td>bla bla bla</td>
</tr>
</table>
или
<table border="1" class="test">
<tr>
<td>bla bla bla</td>
</tr>
</table>
или
<table border="1" style="color:#bb0011" class="test">
<tr>
<td>bla bla bla</td>
</tr>
</table>
/<table\b[^>]*?\bclass\s*=\s*(['"]).*?\btest\b.*?\1.+?<\/table>/si
Что ищем
<table
- последовательность <table
\b
- конец слова. <tablerow
нам не подходит[^>]*?
- любые символы, кроме >
в любом количестве, но не жадно\bclass
- слово, начинающееся с class
\s*=\s*
- знак =
, обрамленный 0 или больше пробелов(['"])
- одинарная или двойная кавычка.*?
- любые символы в любом количестве\btest\b
- отдельное слово test
.*?
- любые символы в любом количестве\1
- именно та кавычка, которая нам встретилась до этого.+?
- любые символы в количестве одного или больше<\/table>
- закрывающий тег/si
- не учитывать переводы строк, регистр не учитыватьПрошу прощения, может не в тему, а если использовать DOMDocument
?
$html = "Ваш html код";
$dom = new DOMDocument();
@$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
$result = $xpath->query("//table[@class=\"test\"]");
foreach ($result as $table)
{
echo $dom->saveHTML($table);
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
На сайте имеется компонент тестирования AriQuizВо время тестирования на вопросы можно отвечать, или пропускать(чтобы ответить позже)
Есть два Инет-провайдеракоторые "отваливаются" с непредсказуемой периодичностью
Как к элементу массива UserName, присвоить данные с input type="text"?
Ребят, приветствуюНа сайте случалась ситуация, что один из пользователей смог обойти проверку и украсть средства