2012-01-23 8 views
1

아래 코드는 텍스트 본문에있는 URL을 감지하여 태그로 묶습니다.PHP regex 필터에 조건부 클래스를 추가하는 방법

function link_it($text) 
    { 

     $text= preg_replace("/(^|[\n ])([\w]*?)((ht|f)tp(s)?:\/\/[\w]+[^ \,\"\n\r\t<]*)/is", "$1$2<a href=\"$3\" >$3</a>", $text); 
     $text= preg_replace("/(^|[\n ])([\w]*?)((www|ftp|m)\.[^ \,\"\t\n\r<]*)/is", "$1$2<a href=\"http://$3\" >$3</a>", $text); 
     $text= preg_replace("/(^|[\n ])([a-z0-9&\-_\.]+?)@([\w\-]+\.([\w\-\.]+)+)/i", "$1<a href=\"mailto:[email protected]$3\">[email protected]$3</a>", $text); 
     return($text); 
    } 

그래서 나는 그것을 싶습니다 특정 도메인과 URL (위의 기능을 통해 감지) 사용자 유형의 경우 (플리커가 | 유튜브 | 비 메오가) 등의 기능이 태그 템플릿 클래스 "삽입을 추가 그렇지 않으면 잎이 계급

예를 들어

반환 '이 웹 사이트 www.google.com입니다'.

this is the website <a href="http://www.google.com">http://www.google.com</a> 

을하지만, '이 웹 사이트입니다 www.flickr.com'w ould return

this is the website <a href="http://www.flickr.com" class="embed">http://www.flickr.com</a> 

이 기능을 기능에 추가하는 방법은 무엇입니까?

답변

1

preg_replace_callback()을 사용하십시오. 콜백 함수에서 embed 클래스가 있어야하는 일부 URL 집합과 URL을 일치시키고 일치하는 경우 class 속성 정의를 포함하고 그렇지 않으면 포함하지 않습니다.

+0

아름답게 작동합니다! 고맙습니다. parse_url과 결합하면 멋지고 우아한 솔루션이됩니다. 위대한 대답과 나는 그 기능을 인식하지 못했습니다 조금 당황! – gordyr

+0

문제 없습니다. 다행히 도울 수있어. – FtDRbwLXw6

관련 문제