Изменение содержимого веб-страницы HTML на лету в PHP - PullRequest
0 голосов
/ 15 апреля 2010

Я хотел бы загрузить документ HTML и изменить его текст в PHP. Например, если у меня есть такой документ:

<html>
<head><title>Test - Example.com</title></head>
<body>
<p><a href="http://www.example.com">Link number 1: Example.com</a></p>
<p>Link number 2: Example.com - some random text</p>
</body>
</html>

Я хотел бы добавить активную ссылку () во второй абзац. Но я не хочу касаться других мест, где встречается строка Example.com, таких как первый абзац или заголовок документа. Поэтому я не могу использовать регулярные выражения для этого, так как мне нужно учитывать структуру документа. Есть идеи, как решить эту проблему? Также HTML-документы, которые я получу, могут быть живыми веб-страницами, поэтому они могут содержать ошибки, код JavaScript и т. Д.

1 Ответ

1 голос
/ 15 апреля 2010

«Правильный» способ сделать это будет через PHP DOM объект, который может импортировать HTML, после чего вы можете использовать XPath для поиска нужной ссылки. Конечно, DOM очень требователен к неверной разметке и может предотвратить довольно простые ошибки, которые хорошо обрабатываются браузерами. Возможно, вам придется помассировать ввод, чтобы исправить наихудшую из ошибок, прежде чем вы сможете выполнить обход контента через DOM.

Наихудшая ошибка, обнаруженная мною в stop-dead-in-DOM, - наличие нескольких блоков html и / или body (например, тупой сервер, вставляющий автономный блок перед фактическим содержимым страницы).

...