2012-10-21 4 views
0

HTML 내용을 포함하는 문자열에서 (<a><span> 태그 사이의) 텍스트를 추출하고 싶습니다.정규 표현식 패턴 일치

내 패턴은 다음과 같습니다 :

$pattern='/<a[^(span)][\/\(\)-:@!%*>#=_|?$&";.\w\s]+<\/a> <span/um'; 

내가 <a의 첫번째 발생 및 <span의 마지막에 나타나는 모두의 첫번째 발생 간격이 텍스트와 텍스트로 출력을 얻을.

예를 들어, HTML 콘텐츠 :

<a href="#">asdasdasd</a> <span blah blah></span> blah blah <a>blah </a> <span>blah 

원치 :

<a href="#">asdasdasd</a> <span 

은 방법 :

<a href="#">asdasdasd</a> <span blah blah></span> blah blah <a>blah </a> <span 
+0

I입니다 이 정규식 파싱 html을 사용하지 않는 것이 좋습니다 귀하의 질문에 대답하지 않습니다 알아요. 왜이 [dom parser] (http://simplehtmldom.sourceforge.net/)와 같은 것을 시도하고 시간을 절약하십시오. – noel

+0

적절한 파서를 사용하십시오. –

+0

dom 파서를 알고 있지만 regex cause를 사용하면해야 할 일이 있습니다. 정규 표현식 학습. –

답변

1
  1. 를 사용하여 HTML을
  2. 사용 게으른 정량을 구문 분석을위한 HTML 파서 '/<a[^(span)][\/\(\)-:@!%*>#=_|?$&";.\w\s]+?<\/a> <span/um';
+0

고마워 친구 .. !! 그게 도움이 .. !! 정규식이 새로 추가되었습니다 –

0

당신은 .+?으로 가능한 <a<span 사이에 적은 수의 문자를 일치하도록 말해서 욕심보다는 게으른 정규 표현식을해야합니다

$ptn = '/<a.+?<span/'; 
$str = '<a href="#">asdasdasd</a> <span blah blah></span> blah blah <a>blah </a> <span>blah'; 
preg_match($ptn, $str, $matches); 
echo $matches[0]; 

결과는 <a href=\"#\">asdasdasd</a> <span

+0

고마워요 .. !! 그게 도움이 .. !! 새로운 정규 표현식 –