2011-02-14 5 views
4

안녕 얘들 아, my $ content 변수는 youtube 비디오 링크를 저장합니다.php preg_match -> 일치하는 값을 변수에 저장 하시겠습니까?

$youtubeurl = "/(\[TRACK=)((http|https)(\:\/\/)(www|it|co\.uk|ie|br|pl|jp|fr|es|nl|de)(\.youtube\.)(com|it|co\.uk|ie|br|pl|jp|fr|es|nl|de)([a-zA-Z0-9\-\.\/\?_=&;]*))(\])/si"; 


$video = preg_match($youtubeurl, $content , $found); 
print_r($video]); // 1 

어떻게 일치하는 문자열의 값을 변수에 저장할 수 있습니까? 이제 print_r ($ video)이라면 나는 그것을 찾은 것을 의미하는 1을 인쇄하고 있습니다. 그러나 나는 변수에 발견 된 문자열을 보유해야합니다. 내가 어떻게 할 수 있니?

당신에게

답변

4

그것을 찾으십시오 $found[2]

여기에는 모두 괄호 안에있는 패턴 인 모든 캡처 된 일치 항목이 포함되어 있습니다.

  • $ [0] = 전체 경기를 발견
  • $ 발견 [1] 하위 그룹의 숫자가 1 발현 [TRACK =
  • $ 발견 [2] = 전체 URL = - 이러한 것 캡처 일치 다음 형태 :
  • $ 발견 [3] = HTTP 또는 HTTPS
  • $ 발견 [4] = 분리기 : //
  • $ 발견 [5] = 하위
  • $ 발견 [5-하면 ] = .youtube.
  • $ [6] = 최상위 도메인 발견
  • $ [7] = 경로 발견
  • $ 발견 [8] = 마감] 분명히

, 당신은 상당히 낭비에 괄호를 사용하고 데이터를 캡처하는 동안 사용 의향이 없습니다. 패턴없이 그룹화하는 방법으로 (?:)을 사용할 수 있습니다 (예 : (?:http|https)은 http 또는 https와 일치하지만 캡처하지는 않습니다.

1

사용 http://www.php.net/manual/en/function.preg-filter.php 감사합니다 - 당신은 당신이 $의 콘텐츠에서 필요한 걸릴 (단지 올바른 반환합니다) 여러 링크

를 사용하거나, preg_replace이다를 사용하려는 경우가해야

+0

어떻게 변수에 발견 된 문자열을 저장하기 위해 preg_replace를 사용할 수 있습니까? 나는 아무것도 대치 할 필요가 없다. 텍스트가 내 패턴과 일치하는지보고 싶다면이 일치 된 문자열을 변수 안에 저장하십시오! – matt

+0

preg_replace ("/ foo (bar) /", "\ $ 1", "foo bar foo bar"); "bar bar"를 반환합니다. – SergeS