2009-11-28 9 views
1

각 앵커 태그와 url을 포함하는 문자열 묶음이 있습니다.PHP 앵커 태그 정규식

문자열 예.

here is a link <a href="http://www.google.com">http://www.google.com</a>. enjoy! 

저는 앵커 태그와 그 사이의 모든 것을 구문 분석하려고합니다.

결과 예.

here is a link. enjoy! 

href를 = 부분에서 URL을 항상 그러나 (때로는이 단축되는 URL을, 때로는 설명 텍스트) 링크 텍스트를 일치하지 않습니다.

정규 표현식이나 PHP 함수로이를 수행하는 방법을 알아내는 데 매우 어려움을 겪고 있습니다. 어떻게 문자열에서 전체 앵커 태그/링크를 구문 분석 할 수 있습니까?

감사합니다.

답변

0

regex to parse html을 사용하지 말고 대신 html 파서를 사용하십시오.

그러나 regex를 사용해야하고 앵커 태그 내부 내용이 </a>과 같이 html이없는 것으로 보장되고 각 문자열에 예제와 같이 하나의 앵커 태그 만 포함되도록 보장되면 - 그 다음에 만 - 같은 것을 사용할 수 있습니다 문제는 매우 구체적인 것으로 보인다 때문에

$1$2

+0

많은 링크에 대해 감사드립니다. – minimalpop

0

/^(.+)<a.+<\/a>(.+)$/ 교체, 내가 그것을 할해야한다고 생각 :

$str = preg_replace('#\s?<a.*/a>#', '', $str); 
0

만 사용하여 일반적인 PHP 문자열 함수. 그냥 태그/내용을 제거하는 것 같은

$str='here is a link <a href="http://www.google.com">http://www.google.com</a>. enjoy!'; 
$s = explode("</a>",$str); 
foreach($s as $a=>$b){ 
    if(strpos($b ,"href")!==FALSE){ 
     $m=strpos("$b","<a"); 
     echo substr($b,0,$m); 
    } 
} 
print end($s); 

출력

$ php test.php 
here is a link . enjoy! 
1

당신의 결과 예를 보면, 보인다 - 당신이 더 당신이 밖으로 제거 것을 유지하려는이나 했습니까? 그렇지 않다면 strip_tags()을 찾고있을 수도 있습니다.

0
$string = 'here is a link <a href="http://www.google.com">http://www.google.com</a>. enjoy!'; 
$text = strip_tags($string); 
echo $text; //Outputs "here is a link . enjoy!"