2009-09-10 4 views
1

나는 HTML 문서의 일부인 구/단어를 찾는 확실한 방법이 궁금합니다. 예를 들어 다음 문서가있는 경우 :PHP를 사용하여 HTML 사이에 구문 또는 단어를 찾으십시오

<a href="#">This is a test</a><b>Another test</b> 

내 목표는 "이 테스트입니다"및 "다른 테스트"를 찾아 다른 것으로 대체하는 것입니다. 이들은 샘플 문구이며 숫자 또는 앰퍼샌드 기호를 포함 할 수 있습니다.

도움이 될 것입니다.

감사합니다

답변

0

당신이 사용할 수있는 PHP의 strip_tags($string, $tagsToRemove)

$justText = strip_tags('<a href="#">This is a test</a><b>Another test</b>'); 

그리고 당신은 두 번째를 사용을 중단해야 할 수도 있습니다 당신이 str_replace("new text", $justText);

를 사용할 수 있도록 다음은 텍스트가 줄 태그를 별도로 유지하려면 strip_tags()의 매개 변수.

$html = '<a href="#">This is a test</a><b>Another test</b>'; 
$anchorText = strip_tags($html, '<a>'); 
$paraText = strip_tags($html, '<p>'); 
$html = str_replace("new anchor text", $anchorText); 
$html = str_replace("new paragraph text", $paraText); 
+2

나는 그가 텍스트 필 Pafford에 태그를 –

+0

+1를 제거하지, 그리고 strip_tag 사용 후는 일반 텍스트로 일부 문자는 "<" and ">이 될 수도, 그것은을 unstrip 어려울 수있는 대체하고자하는 생각 "기호. –

+1

strip_tags는 '<' and '>'문자가 마술처럼 나타납니다. – nickf

2

는 XML 같은 HTML을 고려하고 DOM (PHP 5) 또는 DOM XML (PHP 4) 확장자를 사용 (또는 다른 XML 확장은 PHP에 포함).

각 노드에 대해 사용하는 라이브러리에 따라 DomNode.GetValue을 사용하여 내부 텍스트를 가져올 수 있습니다.

0

Here처럼 뭔가 보일 것 모든 HTML 물건을 제거하는 방법 (html 태그, 스크립트, CSS)을 설명하고 않는 str_replace에 당신은 당신이 원하는대로 바꿀 수 있습니다.

0

이 클라이언트 측을 할 수있는 옵션 인 경우 내가 제안 그래서 jQuery replaceWith()

0

여기서 핵심은 HTML을 구문 분석, 의미에서, 정규 표현식을 사용하는 것입니다 ...

는 것 사용

<?php 

$str = "<a href =\"\">Hello</a>"; //The string to search 

preg_match('/(<.+>)??.+(<\/.+>)??/i',$str,$match); //Find all occurences and store the tag content in an array called $match 

echo $match[0]; //Echo the first value 

?> 

이 기본적으로 입력 문자열을 검색합니다 (당신이 당신의 페이지의 HTML로 설정했던하는)과 배열의 값으로 태그 사이에 텍스트의 각 경기를 반환합니다. 첫 번째 태그의 경우 값은 $ match [0]에 저장되고, 두 번째 태그는 $ match [1]에 저장됩니다.

HTML 태그로 시작하여 다음으로 끝나는 패턴을 먼저 찾습니다. HTML 태그이지만 두 태그 중 하나만 선택하지 않고 선택한 태그 사이에 내용 만 남깁니다.

희망이 도움이됩니다.

Braeden

+0

HTML을 파싱하는 데 필요한 키는 실제로 정규 표현식을 사용하지 않고 적절한 HTML/XML 파서를 사용합니다. –

+0

하지만 태그 콘텐트를 얻는다면 간단한 정규식을 사용할 때 파서를로드하는 오버 헤드가 왜 생깁니 까? – BraedenP

+0

왜냐하면 그것은 단순한 정규 표현식이 아니기 때문입니다. 자신의 모범을 위해 일하는 것을 찾은 다음 (자신의 모범이 아닌) 'This is Another test a test'을 찾으십시오. –

관련 문제