2013-04-26 3 views
1

Я хочу, чтобы html корректно использовал регулярное выражение для этого, мне нужно регулярное выражение выбора div.Нужно действительное регулярное выражение для выбора div для действительного html

я использовал этот

 (<div.*?>.*?<\/div>) 

, но проблема есть, она действует этот вид текста также:

<div>some this <div> some another text</div> 

, который не является действительным

мне нужно что-то выражение, которое дайте мне только последнюю часть, которая составляет

<div> some another text</div> 

Пожалуйста, дайте мне советы

+11

Это 2013. Стоп пытается разобрать HTML с регулярными выражениями. – 2013-04-26 18:17:19

+3

Посмотрите, если [это обсуждение] (http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags) не убеждает вас в выборе другого подхода. – DOK

+1

Используйте этот http://jsoup.org/ и сделайте свою жизнь проще :) – Watt

ответ

2

Правильно, это не очень хороший подход к анализу html с регулярным выражением в большинстве ситуаций. Лучше всего использовать DOMDocument, XPath ...

К сожалению, некоторые языки разметки не имеют возможности иметь все эти инструменты. Это случай марсианского языка разметки, который должен анализироваться только с регулярным выражением (обязательно на Марсе, это написано в их библии)

<meta charset="UTF-8"/><pre> 
<?php // this take the content between the most inner tags ͽΛΙPͼ 
$subject = 'ͽΛΙPͼ ŏoo͢o öo ͽΛΙPͼ o̊őoo͟o o͇o͈o͉ o̍o̎o ͽ/ΛΙPͼ o̐oo͜oo ͽ/ΛΙPͼ'; 
$pattern = '~(?<=ͽΛΙPͼ)(?:[^ͽ]++|ͽ(?!/?ΛΙPͼ))*+(?=ͽ/ΛΙPͼ)~u'; 
preg_match_all($pattern, $subject, $matches); 
print_r($matches); 
Смежные вопросы