나는이 문제를 완전히 해결하지 못했고 정규 표현식에 대한 기술이 부족하여 도움이되지 않습니다.YouTube videoID 일치 및 바꾸기
다음은 내가 달성하고자하는 것입니다. - 온라인 사이트에서 다운로드 한 블로그 게시물의 텍스트 및 링크가 포함 된 NSString을 여러 개 가지고 있습니다. - 내가 인라인 이미지를 가질 수 있도록 나는 즉석에서 만들 수있는 HTML 페이지와있는 UIWebView를 사용하고, 등 비디오 - <iframe src="//www.youtube.com/embed/VIDEOID" height="405" width="720" allowfullscreen="" frameborder="0"></iframe>
및
http://youtu.be/VIDEOID
- 블로그 게시물 YouTube 링크의 두 가지 유형을 포함
블로그에는 Wordpress를 사용하고 Wordpress에는 YouTube 링크에 대한 자동 감지 기능이있어 삽입물이 필요하지 않으므로 두 가지 유형의 URL이 있습니다. 또한 embed의 첫 번째 유형은 브라우저가 http 또는 https를 요청할 수 있기 때문에 작동하지 않습니다. 따라서 UIWebViews에서 작동하지 않는 것으로 보입니다.
기본적으로 두 가지 유형의 URL에서 VideoID를 찾은 다음 NSString에서 기존 URL을 가져 와서 올바른 VideoID가 첨부 된 올바른 삽입 유형으로 바꿉니다. 나머지 문자열은 그대로 유지해야합니다. 모든 것을 끝내려면 게시 당 알 수없는 동영상 수가 있으므로 동일한 NSString에서 여러 URL을 통해 작업해야합니다. 사람이 올바른 방향으로 날 지점 수 있다면
NSString *regexToReplaceRawLinks = @"(https?://)?(www\\.)?(youtu\\.be/|youtube\\.com)?(/|/embed/|/v/|/watch\\?v=|/watch\\?.+&v=)([\\w_-]{11})(&.+)?";
NSError *error = NULL;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:regexToReplaceRawLinks
options:NSRegularExpressionCaseInsensitive
error:&error];
NSString *modifiedString = [regex stringByReplacingMatchesInString:string
options:0
range:NSMakeRange(0, [string length])
withTemplate:@"<iframe width=\"320\" height=\"180\" src=\"http:\/\/www.youtube.com\/embed\/$1\" frameborder=\"0\" allowfullscreen><\/iframe>"];
NSLog(@"%@", modifiedString);
return modifiedString;
나는 매우 감사하게 될 것입니다 : 내가 원하는
이
내가 지금까지 가지고있는 코드입니다,하지만 난 그게 끔찍하게 잘못 알고 난 달성하고 있지 않다 특히와 정규식의
도움을 주셔서 대단히 감사합니다. 그것은 짧은 링크를 위해 잘 작동하지만, 이미 싸서 iframe과 긴 버전을 캡처하지 않습니다. 두 가지 별도의 정규식을 작성하여 두 가지를 모두 처리해야한다고 생각합니다. – tizaks