2011-05-13 1 views
1

위키 스타일의 텍스트를 구문 분석하기 위해 일부 정규식을 사용하고 있습니다.PHP YouTube API 비디오 제목 구문 분석

<?php 
function wikiParser($data){ 
$data = preg_replace('/\[\[Youtube:([a-zA-Z0-9_]+)\]\]/', getYoutubeTitle("$1"), $data); 
return $data; 
} 
?> 

이 함수 [유튜브 : b32hRITAAew] 같은 문자열 검색 다른 기능 getYoutubeTitle (b32hRITAAew)를 호출되어.

<?php 
function getYoutubeTitle($hash){ 
$url = 'http://gdata.youtube.com/feeds/api/videos?v=2&q='.$hash.'&max-results=1&fields=entry(title)&prettyprint=true'; 
$fp = fopen($url, 'r'); 
$page = ''; 
while(!feof($fp)){ 
    $page .= fgets($fp, 4096); 
} 
$titre = eregi("<title>(.*)</title>", $page, $regs); 
return $regs[1]; 
} 
?> 

두 번째 기능은 응답 데이터를 구문 분석합니다.

<?xml version='1.0' encoding='UTF-8'?> 
<feed xmlns='http://www.w3.org/2005/Atom'> 
    <entry> 
     <title>The Lord of the Rings Symphony (1) HQ</title> 
    </entry> 
</feed> 

그리고 제목이 반지 심포니의 제왕 (해야한다 : b32hRITAAew 코드의 경우, 다음과 같은 URL이

http://gdata.youtube.com/feeds/api/videos?v=2&q=b32hRITAAew&max-results=1&fields=entry(title)&prettyprint=true

그것은 출력을 액세스 할 수 있습니다 1) HQ. 하지만 알 수없는 이유로 그것은 무작위로 보여줍니다. 사진 트릭 - 모든 카메라의 손쉬운 이미지 안정기. 나는이 문제를 해결하기 위해 열심히 노력했지만, 여전히 그 문제가 어떻게 나타나는지 알 수 없다. getYoutubeTitle("$1") 또는 다른 문제가 있습니까?

답변

1

당신은이 같은 preg_replace_callback 기능을 사용할 수 있습니다 :

function wikiParser($data){ 
$data = preg_replace_callback('/\[\[Youtube:([a-zA-Z0-9_]+)\]\]/', "getYoutubeTitle", $data); 
return $data; 
} 

function getYoutubeTitle($array){ 
// $array looks like this: Array ([0] => [[Youtube:b32hRITAAew]] [1] => b32hRITAAew) 
$hash = array_pop($array); 
$url = 'http://gdata.youtube.com/feeds/api/videos?v=2&q='.$hash.'&max-results=1&fields=entry(title)&prettyprint=true'; 
... 
} 
+0

덕분에, 그 작품! –