2012-08-27 1 views
2

그래서 PHP에서 getType() 함수를 코딩하려고합니다. 이 함수는 웹 양식 (CodeIgniter)에서 사용자가 입력 한 문자열을 취한 다음 거기에서 내용을 분석 한 다음 문자열이 .jpg, .png 등으로 끝나는 사진, YouTube 비디오 링크, vimeo 비디오 링크 또는 텍스트.문자열이 image, youtube 등인지 확인하는 가장 좋은 방법

저는이 작업을 수행하는 가장 경제적 인 방법을 시각화하는 데 어려움을 겪고 있습니다.

if (strpos($content, ".jpg|.png|.bmp")) 
{ return "image"; } 
else if (strpos($content, "youtube.com")) 
{ return "youtube"; } 
else if (strpos($content, "vimeo.com")) 
{ return "vimeo" } 
else 
{ return "text" } 
+0

현재 코드의 문제점은 무엇입니까? 문자열이 이미지 확장으로 끝나는 지 확인하는 것이 좋습니다. 누군가가 이미지 링크로 수행하는 작업에 따라 잠재적으로 확장 기능 중 하나를 포함하는 디렉토리로 URL을 입력 할 수 있기 때문에 사용자 정보로 PHP 스크립트를 실행할 수 있습니다. youtube 및 vimeo url에도 동일하게 적용됩니다. 당신은 그들을 위해 정규식을 사용해야합니다. – Vulcan

답변

5

이 작동합니다 :

// check if string ends with image extension 
if (preg_match('/(\.jpg|\.png|\.bmp)$/', $content)) { 
    return "image"; 
// check if there is youtube.com in string 
} elseif (strpos($content, "youtube.com") !== false) { 
    return "youtube"; 
// check if there is vimeo.com in string 
} elseif (strpos($content, "vimeo.com") !== false) { 
    return "vimeo"; 
} else { 
    return "text"; 
} 

데모 : http://codepad.viper-7.com/1V4joK가 유튜브 나 비 메오 링크임을 보장이 없다는 것을

참고. 이것은 문자열 만 서비스와 일치하는지 여부를 확인하기 때문에.

+0

이미지를 제외한 모든 것이 효과적입니다. 난 꽤 정규식 멍청한데,하지만 첨부 파일 이름 전에 처리기가 있어야합니까? 아무런 보장과 관련하여, 이것이 당신이 제안하는 최선의 해결책입니까? – bswinnerton

+0

@bswinnerton 내 대답에 추가 된 데모를보십시오. 그것은 나를 위해 일하는 것 같다. 파일 유형 정보. 비디오 서비스에 대해서. 그것은 달려있다. 비디오의 특정 문자열 형식 만 허용합니까? 그렇다면 당신은 수표를 더 잘 만들 수 있습니다. – PeeHaa

+0

내가 관심을 가지고있는 유일한 것은 youtube/video id 또는 image 파일명을 얻는 것입니다. 나는 내가 시도한 것에 상관없이 이미지를 반환 할 수 없다. 나는 아직도 그것을 알아 내려고 노력하고있다. – bswinnerton

관련 문제