HTML, чтобы текст с классом domdocument - PullRequest
0 голосов
/ 19 марта 2010

Как получить исходный код HTML-страницы без тегов HTML? Например:

<meta http-equiv="content-type" content="text/html; charset=utf-8" /> 
<meta http-equiv="content-language" content="hu"/> 
<title>this is the page title</title>
<meta name="description" content="this is the description" />
<meta name="keywords" content="k1, k2, k3, k4" />
start the body content
<!-- <div>this is comment</div> -->
<a href="open.php" title="this is title attribute">open</a>
End now one noframes tag.
<noframes><span>text</span></noframes>
<select name="select" id="select"><option>ttttt</option></select>
<div class="robots-nocontent"><span>something</span></div>
<img src="url.png" alt="this is alt attribute" />

Мне нужен этот результат:

this is the page title this is the description k1, k2, k3, k4 start the body content this is title attribute open End now one noframes tag. text ttttt something this is alt attribute

Мне также нужны заголовок и атрибуты alt. Идея?

Ответы [ 3 ]

0 голосов
/ 19 марта 2010

Вы можете сделать это с помощью регулярного выражения.

$regex = '/\<.\>/';

было бы очень простым началом удалить что-либо с < и > вокруг него.Но для того, чтобы сделать это, вам нужно будет включить HTML как file_get_contents() или какую-то другую функцию, которая превратит код в текст.

Добавление:

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

$regex2 = '/\<.(?<=(title))(\=\").(?=\")/';

Извлекает (я думаю ... я все еще изучаю RegEx) любой текст между < и title=", при условии, что у вас не было других соответствующих выражений до заголовка.Опять же, это будет довольно сложный процесс регулярных выражений.

0 голосов
/ 19 марта 2010

Мое решение немного сложнее, но у меня оно работало нормально.

Если вы уверены, что у вас есть XHTML, вы можете просто считать код XML (но вы должны поместить все в надлежащую упаковку).

Затем с помощью XSLT вы можете определить некоторые базовые шаблоны, которые будут делать то, что вам нужно.

0 голосов
/ 19 марта 2010

Это не может быть сделано в автоматическом режиме. PHP не может знать, какие атрибуты узла вы хотите пропустить. Вам нужно было либо создать некоторый код, который перебирает все атрибуты и текстовые узлы, которые вы можете передать карте, определяя, когда использовать содержимое узла, либо вы просто выбираете то, что вам нужно с XPath, по одному.

Альтернативой может быть использование XMLReader. Это позволяет вам перебирать весь документ и определять обратные вызовы для имен элементов. Таким образом, вы можете определить, что делать с каким элементом. См

...