2014-04-10 3 views
0

여기 내 코드입니다 : 내가 $datathis/is/what/i/want 될,하지만 난 그것을 에코 때 내가 1을 얻을 갖고 싶어정규 표현식

$pattern = '/"([^"]*)"/' ; 
$subject = '<a href="this/is/what/i/want">text_text_text</a>'; 
$data = preg_match($pattern, $subject, $matches); 
echo $data; 

가. 정규 표현식은 큰 따옴표 사이에 모든 것을 가져 오는 것으로되어 있습니다.

누구나이 부분에 대해 밝힐 수 있습니까? 나는 정규 표현식에 비교적 새로운 것이다. 여기

+1

'는 preg_match를 배열이 아닙니다. 대신 다음을 수행하십시오 :'preg_match (...); print_r ($ matches);'. –

+1

정규식이란 무엇입니까? – Martijn

답변

0

이 아닌 $data을 사용해야합니다. $data은 함수의 반환 값 (true/false) (/ 0으로 표시됨)을 보유합니다. 세 번째 매개 변수 $matches은 실제 발견 된 일치 항목 (및 함수에 의해 처리 된 다른 몇 가지 값)을 보유합니다.

// '$data = ' is not neccesary, if you only want the matches: 
preg_match($pattern, $subject, $matches); 
print_r($matches); 
1

많은 실수 :

  1. 첫 번째와 preg_match의 가장 중요한 결과는 반환 값이 아닌 일치하는 결과이다. 이는 $matches 인수에서 사용할 수 있습니다.
  2. HTML을 정규식으로 구문 분석하면 오류가 발생할 수 있습니다.
  3. 정규 표현식을 표시하지 않았습니다.
0

좋은 생각하기는 preg_match를 사용하지 않는 href가에서 특성을 얻을 수 있지만, 객체는이 더 나은

$subject = '<a href="this/is/what/i/want">text_text_text</a>'; 

$dom = new DOMDocument(); 
$dom->loadHTML($subject); 
$xpath = new DOMXPath($dom); 

$ahrefs = $xpath->query('//a'); 

foreach ($ahrefs as $ahref) { 
    $data = $ahref->attributes->getNamedItem("href")->nodeValue . "<br />"; 
} 
echo $data; 

출력 할 느릅 나무합니다 : 리턴 1 또는 0 또는 FALSE`) (

this/is/what/i/want