2010-04-15 8 views
0

PHP에서 HTML 문서를로드하고 텍스트를 수정하고 싶습니다. 예를 들어 다음과 같은 문서가있는 경우 :PHP로 HTML 웹 페이지 내용 수정하기

<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

HTML을 가져올 수있는 PHP의 DOM 개체를 통해 "올바른"방법을 수행 할 수 있습니다. XPath를 사용하여 원하는 정확한 링크를 찾을 수 있습니다. 물론 DOM은 유효하지 않은 마크 업에 대해 매우 까다 롭고 브라우저가 멋지게 처리하는 아주 간단한 오류를 막을 수 있습니다. DOM을 통해 내용을 왕복 이동하기 전에 가장 나쁜 오류를 수정하기 위해 입력을 마사지해야 할 수도 있습니다.

내가 발견 한 최악의 dead-in-DOM's-tracks 오류는 여러 HTML 및/또는 본문 블록 (예 : 실제 페이지 내용 앞에 <HTML> 블록을 삽입하는 바보 같은 서버)이있는 것으로 나타났습니다.