2011-05-08 6 views
1

안녕하세요. 다음 기능을 사용하여 URL을 제거하고 있지만 이메일 주소도 삭제합니다.URL을 없애고 이메일 주소를 허용하십시오.

내가 원한 한 가지는 사용자가 다른 사용자에게 이메일 주소를 보낼 수 있지만 URL을 보낼 수 없기 때문입니다.

function cleaner($url) { 
    $U = explode(' ',$url); 
    $W =array(); 
    foreach ($U as $k => $u) { 
    if (stristr($u,'http') || (count(explode('.',$u)) > 1)) { 
     unset($U[$k]); 
     return cleaner(implode(' ',$U)); 
    } 
    } 
    return implode(' ',$U); 
} 

$url = "Here is another funny site www.tinyurl.com/55555 and http://www.tinyurl.com/55555 and img.hostingsite.com/badpic.jpg"; 
echo "Cleaned: " . cleaner($url); 

답변

2

필자는 마침표와 일치하는 것과 반대로 URL을 일치시키기 위해 적절한 정규 표현식을 사용하려고합니다. 이것을 하나씩주세요 : http://daringfireball.net/2010/07/improved_regex_for_matching_urls

preg_replace을 실행하면 원하는 결과를 얻을 수 있습니다.

+0

나는 preg_replace에 큰 오류가있어 모든 코드가 작동하지 않는 것 같습니다. 그래서이 함수를 사용했습니다. – RussellHarrower

+2

preg_replace는 핵심 함수이며 정규식이 작동하면 작동합니다. 당신이 마주 치던 "거대한 오류"는 무엇 이었습니까? 모든 정상적인 솔루션을 사용하려면 preg_replace를 사용하는 것이 좋습니다. –

관련 문제