2011-08-02 14 views
0

나는이 모든 것을 잡는 유지하기 위해 * 사용하는 방법을 알아낼 수 있으며, H4 텍스트PHP 정규식 H4 태그 사이의 정보에 대한

$regex = '/<h4>([A-Za-z0-9\,\.])/'; 

난 그냥 다시 첫 글자를 얻고이 무엇인지 잡으려고 노력하고있다 먼저 < 문자.

나는 무수한 시도를했으며, 나는 단순한 것을 간과하고 있음을 알고있다. 그래서 나는 다음과 같은 작품을하는 데 필요한 것보다 훨씬 더 열심히 만들고 있었다

:

$regex = '/<h4>.*?<\/h4>/'; 
+1

아닌가요 ['getElementsByTagName'] (HTTP : //www.php.net/manual/en/domdocument.getelementsbytagname.php) 잘 맞는가? – Wrikken

+0

@Wrikken PHP를 사용하는 경우가 아닙니다. : P 나는 그것이 그렇게 쉬웠 으면 좋겠다. –

+1

@PhpMyCoder Wrikken의 링크를 클릭하셨습니까? 그것은 PHP 함수입니다 : http://www.php.net/manual/en/domdocument.getelementsbytagname.php – Paulpro

답변

4

가 첫 번째 <까지 모든 문자를 잡는 것을 믿을 수 있다면 충분히 좋은 규칙은 다음이를 사용할 수 있습니다 :

: 물론
$regex = '/<h4>([^<]*?)</'; 

에만 사로 잡고 그 정의가 <h4>The <b>Best</b> Book</h4>에서 'The ' 당신은 그것을 해결할 수있는 것은로 변경 될 <h4 > 또는 <h4 style="..."> 이런 건 백만 다른 유효 HTML 예제와 함께, 그것을 깰 때문에 여전히 <h4></h4> 사이의 모든 것을 잡아,하지만 것입니다

은 완벽하지 않습니다. 내용물에 <이 없으므로 태그가 항상 정확히 <h4> 일 것임을 알고 있다면 첫 번째 것이 자신의 상황에 적합합니다.

상황이 좀 더 복잡하면 HTML과 XML을 구문 분석하기위한 PHP의 DOM 확장 (DOMDocument)과 같은 것을 사용하고 싶을 것입니다. 어느 쪽도 정규 언어가 아니며 정규 표현식으로 오류를 파싱 할 수 없기 때문입니다.

+3

철저히 답변 해 주셔서 감사합니다. 저를 도와주기 위해 시간을내어 주셔서 감사합니다. – Eric

+1

@ 에릭 당신을 환영합니다 :) – Paulpro

0

이 작업을 수행하려면 아래 기능을 사용할 수 있습니다. 첫 번째 매개 변수에

**function getTextBetweenTags($string, $tagname) { 
    $pattern = "/<$tagname ?.*>(.*)<\/$tagname>/"; 
    preg_match($pattern, $string, $matches); 
    return $matches; 
}** 

당신이 전체 문자열을 전달해야하고, 두 번째 매개 변수는 태그 명 ("H4")를 통과해야 ..