2009-11-01 6 views
0

나는 vBulletin 포럼의 MySQL 데이터베이스를 업데이트하기 위해 임시 PHP 스크립트를 작성하고 있습니다.PHP Regex & YouTube

다음은 작동 방식입니다. [youtube] [/ youtube] 코드가있는 항목을 찾습니다. 그리고 나서 그 코드를 대신 YouTube 비디오에 대한 링크로 대체해야합니다.

그래서, 여기에 내가 가지고 가야 무엇의 예입니다

$string = <<<END 
Hi everyone! Check out this video that I just found on YouTube! 

[youtube]<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/Md1E_Rg4MGQ&hl=en&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/Md1E_Rg4MGQ&hl=en&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object>[/youtube] 
END; 

는 그리고 그 대신이처럼 보이게해야한다 : 나는 작업 두통을 얻고있다

[URL=http://www.youtube.com/watch/?v=Md1E_Rg4MGQ]http://www.youtube.com/watch/?v=Md1E_Rg4MGQ[/URL] 

을 정규 표현식. Regex에 대한 충분한 경험이 없기 때문에 무엇을해야할지 알아낼 수 있습니다.

그것은이 같은 것을보고 있습니다

$string = preg_replace("#\[youtube\]?????\[/youtube\]#i", "[URL=http://www.youtube.com/watch?v=$1]http://www.youtube.com/watch?v=$1[/URL]", $string); 

제발 도와주세요!^_^

답변

0

아마도 이와 비슷한가요? 이것은이 문자열 name="movie" value="????????????????" 형식을 정확하게 예상하는 것을 제한된다

$string = preg_replace('#\[youtube\].*?name="movie" value="(.*?)".*?\[/youtube\]#i', "[URL=$1]$1[/URL]", $string); 

주 - 기술적으로 동일한 의미하지만, 다른 순서 등 다른 유효한 HTML 구조는 이상적인 솔루션의 일종을 사용하는 것입니다있다 DOM 파서가 영화 속성의 가치를 잡으려고하지만 사람들이 항상 정확한 형식을 사용한다는 것을 안다면 (예 : 그 사본은 YouTube에서 복사/붙여 넣기가 항상 그렇듯이) 그렇다면 정규식으로 충분합니다.

+0

알겠습니다. 감사 :) – stackoverflowUser001