2010-04-15 4 views
0

Я хотел бы загрузить документ HTML и изменить его текст на PHP. Например, если у меня есть документ, как это:Изменение содержимого веб-страницы 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 и т. Д.

+0

Каковы ваши критерии поиска для ссылки? Я не уверен, я понимаю, почему вы не можете использовать регулярные выражения, конечно XPath был бы лучшим выбором, но вы говорите: страница может содержать ошибки/недопустимый XML ... – Hinek

+0

Какое условие вы являетесь ищет, чтобы определить, что становится ссылкой и что остается нетронутым? – ForCripeSake

+0

Я хочу изменить только стандартный текст и не касаться гиперссылок или текста, вложенных в комментарии HTML, скрипты, URL-адреса и т. Д. – pako

ответ

1

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

Наихудшие стоп-мертвая-в-DOM's-треки ошибок я нашел оказываю множественный HTML и/или блоки тела (например, тупой сервер вставив автономный <HTML> блока до фактического содержимого страницы).

Смежные вопросы