Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Поиск текста внутри тега, который обернут в другой тег
Форумы портала PHP.SU » PHP » Регулярные выражения » Поиск текста внутри тега, который обернут в другой тег

Страниц (1): [1]
 

1. Skandalli - 17 Сентября, 2015 - 23:55:21 - перейти к сообщению
Подскажите с регуляркой
<div class=1>
текст
<p> текст , который нужно выдернуть </p>
</div>
2. Deonis - 18 Сентября, 2015 - 00:04:52 - перейти к сообщению
Skandalli, я не любитель регулярок, а в отношении парсинга HTML - неистово лютую )) Потому, что регулярные выражения никогда не были инструментом для этих целей. Поэтому даю вам такой вариант:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $html = '<div class=myclass1>
  3. текст
  4. <p> текст , который нужно выдернуть </p>
  5. </div>';
  6.  
  7. $dom = new DomDocument;
  8. $dom->loadHTML($html);
  9. $xpath = new DomXPath($dom);
  10. $p = $xpath->query("//div[contains(@class, 'myclass1')]/p");
  11. echo $p->item(0)->nodeValue; // текст , который нужно выдернуть
3. Skandalli - 18 Сентября, 2015 - 00:26:47 - перейти к сообщению
Deonis я дико извиняюсь, что заставляю Вас негодовать (как я понимаю, по делу), но задание дано именно на regexp)
4. Panoptik - 18 Сентября, 2015 - 00:31:39 - перейти к сообщению
5. DeepVarvar - 18 Сентября, 2015 - 08:04:20 - перейти к сообщению
Skandalli пишет:
но задание дано именно на regexp
+100500 Deonis'у, и по шапке тем кто такие задания задает. А чтобы эти задаватели поняли какую чушь они порят, я бы задал им вот такое задание:
CODE (html):
скопировать код в буфер обмена
  1. <input type='text' name=text1 class='a b c d' value="" />
  2. <input type=text name="text2" class=' z y z    ' >
  3. ... и тут еще штук 30-50 таких инпутов в разных комбинациях кавычек у атрибутов, оберток из дивов, пэшек, текстовых нод и прочей специфики ...

Вытащить с помощью регулярки все значения type/name/class/value для всех инпутов, а если какого-то атрибута не будет, значит вывести пустое значение.
Только нужно учитывать, например, что если атрибут тип не задан, значит там не пусто, а type=text по умолчанию.

 

Powered by ExBB FM 1.0 RC1