2011-07-06 6 views
-1

내 문제입니다. 링크/사진을 공유 할 수있는 웹 사이트를 만들고 있습니다. 이제 내가하고 싶은 것을 heres. 내가 페이지에 그것을 표시 할 (요법 JPG, GIF, PNG)을 heres링크 또는 이미지 preg/ereg가 대체 하시겠습니까?

<a href="http://example.com" target="_blank">http://example.com</a> 

하지만 내 몰락, 그 경우 사진 : 링크가 사이트에 대한 링크 인 경우, 다음과 같은 링크를 표시 링크 대신. 어떻게해야합니까?

$profile_post_post = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]","<a href=\"\\0\" target=\"_blank\">\\0</a>", $profile_post_post); 

링크를 만드는 코드 그게 전부 : -

은 추가 잊으.

+0

IMG 그냥 를 사용 따라서, 나중에 재사용을 위해, $ URL이 동시에 데이터베이스에 결과를 저장하기 위해 더 나은 것 이미 가지고있는 것에 대해 더 자세히 설명해 주실 수 있습니까? – cwhelms

+0

정상 링크에서 이미 수행 한 코드를 공유하십시오. – hakre

+2

Blimey; 나는'ereg_replace'를 수년 만에 보지 못했습니다! @JakeAero라는 특별한 이유가 있습니다. 매뉴얼 페이지에서 "이 함수는 PHP 5.3.0에서 사용이 권장되지 않았습니다."라는 내용의 방대한 빨간색 경고 **를 무시하고 "이 기능에 크게 의존하고 있습니다. 낙담 한 "? Perl 호환 정규 표현식 구문을 사용하는 "preg_replace()"라고 읽는 밑바닥의 팁은'ereg_replace()'보다 빠른 대안 일 수 있습니다. –

답변

0

preg_replace_callback을 사용하여 형식에 따라 조건부로 링크 내용을 선택하는 콜백을 제공합니다. 즉 .jpg으로 끝나면 img 태그를 렌더링합니다. 일반적인 이미지 파일 확장명으로 끝나면 이름을 인쇄하십시오.

0

당신이 PHP를 사용하는 가정 및 URL은 $ URL이에 저장됩니다

if (!preg_match("@^https?\:\/\/@", $url) 
{ 
    $url = "http://$url"; 
} 

if (preg_match("@\.(gif|jpe?g|png)[email protected]", $url)) 
{ 
    echo '<img src="' . $url . '" />"'; 
} 
else 
{ 
    echo '<a href="' . $url . '" target="_blank">' . $url . </a>; 
} 

일부 사진은 GIF 베어링없이 올바른 MIME 타입으로 제공 될 수 있기 때문에 이것은, 정확한 방법이 아닙니다 , jpeg, jpg 또는 png 확장자.

이것은 링크가 사진을 참조 하는지를 확인하는 훨씬 더 좋은 방법이지만 시간과 대역폭을 소비합니다. 그냥 할 것 이미지를 링크하는 경우

if (!preg_match("@^https?\:\/\/@", $url) 
{ 
    $url = "http://$url"; 
} 

$headers = get_headers($url, 1); 
$mime_type = isset($headers["Content-Type"]) ? $headers["Content-Type"] : ""; 

if (preg_match("@\.(gif|jpe?g|png)[email protected]", $url) || preg_match("@^image\/@", $mime_type)) 
{ 
    $html = '<img src="' . $url . '" />"'; 
} 
else 
{ 
    $html = '<a href="' . $url . '" target="_blank">' . $url . '</a>'; 
}