2010-03-05 2 views
2

내에서 rel 속성에서 텍스트를 제거 내가 정규식이 아침을 시도했지만 운이없는 오전PHP는 정규식 링크

<a href='#' rel='i want this text here'></a>. 

즉 rel 속성의 텍스트를 잡기 위해 정말 쉬운 방법이있다.

+1

파서를 사용해 보셨습니까? – kennytm

답변

0

이 작동합니다 :

preg_match_all('%<a[^>]+rel=("([^"]+)"|\'([^\']+)\')[^>]*>%i', $html, $matches); 
print_r($matches); 
+0

우리는 regEx '를 사용하여 HTML을 구문 분석하지 않습니다.이 부분을 – Erik

+0

최상의 솔루션이라고 결코 주장하지 않았습니다. 그러나 그것은 그의 질문에 대한 대답이다.) – Wolph

1

하지 않는 한, 나는 당신이 DOMDocument 같은 내장 된 것들 중 하나, 또는 PHP Simple HTML DOM Parser 같은 HTML 파서를 사용하는 것이 좋습니다. 간단한 Regex보다 더 많은 노력을 기울이지 만 모든 경우와 변형에서 훨씬 더 안정적으로 작동합니다.

<a href='#' rel="i want this text here"></a> 
<a href='#' REL="i want this text here"></a> 
<a rEL='i want this text here' href='#' ></a> 
0

다른 사람이 말했듯이, 당신은 정기적으로하지으로 HTML을 구문 분석에 대한 정규식을 사용하지 않아야합니다. 그러나 HTML의 구조가 정규 표현식을 사용할 수 있다고 확신한다면. 그것은 잘못 될 수있는 많은 것들, HTML 구문 분석에 대한 정규식을 사용하는 정말 좋은 생각 그리고 당신은 수행해야합니다 : 지적 다른 포스터처럼

<?php 
$a = "<a href='#' rel='i want this text here'></a>"; 

if(preg_match("{<a href.*?rel='(.*?)'.*?>}",$a,$matches)) { 
     echo $matches[1]; // prints i want this text here 
} 
?> 
0

: 다음 프로그램은 당신이 원하는 물건을 추출합니다 더 많은 지원. (페카의 의견을 참조하십시오!)

내가 모든 rel 속성 얻기의 전체 예제 postet 여기에 몇 가지 값을 추가하려면 :

<?php 
$html = "<a href='#' rel='i want this text here'></a>"; 

$dom = new DomDocument(); 
$dom->loadHtml($html); 

$xpath = new DomXPath($dom); 
$refAttributes = $xpath->query("//a[@rel]"); 
// ^^ This means: Get my every <a...></a> that has a rel attribute 

foreach($refAttributes as $refAtt) { 
    var_dump($refAtt->getAttribute("rel")); 
} 

를 추가 읽기 하나를 시도 할 수 있습니다 :

http://kore-nordmann.de/blog/do_NOT_parse_using_regexp.html

http://kore-nordmann.de/blog/0081_parse_html_extract_data_from_html.html