본문 바로가기

개발도구/PHP,ASP,JSP,SCRIPT

[php-펌] Tag 제거해주는 함수 모음

strip_tags (PHP 4, PHP 5)

 

 string strip_tags ( string $str [, string $allowable_tags ] )

주어진 str 에서 모든 HTML과 PHP 태그를 제거한 문자열을 반환합니다. 이 함수는 fgetss() 함수와 동일한 태그 제거 방식을 사용합니다.

 

+) 주의

- strip_tags()는 HTML의 유효성을 검사하지 않기 때문에, 부분적이거나 깨진 태그는 예상 외의 텍스트/데이터를 제거할 수 있습니다.

- 이 함수는 allowable_tags 를 사용하여 허용한 태그 안의 어떠한 속성도 변경하지 않습니다. 악성 사용자가 다른 사용자에게 보여지는 텍스트를 게시할 때style이나 onmouserover 속성을 사용하여 악용할 수 있습니다.

 

 예  :

 

<?php
$text 
'<p>테스트 문단.</p><!-- 주석 --> <a 
href="#fragment">다른 텍스트</a>'
;
echo 
strip_tags($text
);
echo 
"\n"
;

// <p>와 <a>를 허용
echo strip_tags($text'<p><a>'
);
?>

 

-------------------------------------------------------------------------------------------------

 

htmlspecialchars (PHP 4, PHP 5)

 

string htmlspecialchars ( string $string [, int $quote_style [, string $charset [, bool $double_encode ]]] )

어떤 문자들은 HTML에서 특별한 정의를 가지기에, 그 의미를 보존하려면, HTML 엔터티로 표현해야 합니다. 이 함수는 이러한 변환을 수행한 문자열을 반환합니다; 이 번역은 모든 웹 프로그래밍에서 매우 유용합니다. 모든 HTML 문자 엔터티를 번역해야 한다면, 이 함수 대신 htmlentities()를 사용하십시오.

 

이 함수로 게시판이나 방명록 등의 프로그램에서, HTML을 포함하는 사용자 입력 텍스트를 막을 수 있습니다.

변환이 일어나는 문자는:

  • '&'(앰퍼샌드)는 '&amp;'가 됩니다
  • '"'(겹따옴표)는 ENT_NOQUOTES를 설정하지 않았을 때 '&quot;'가 됩니다.
  • '''(홑따옴표)는 ENT_QUOTES가 설정되었을 때만 '&#039;'가 됩니다.
  • '<'(미만)은 '&lt;'가 됩니다.
  • '>'(이상)은 '&gt;'가 됩니다.

+) 주의 : 이 함수는 위 목록 이외에는 아무 것도 번역하지 않는 점에 주의하십시오. 완전한 엔터티 번역을 위해서는, htmlentities()를 참고하십시오

 

 

------------------------------------------------------------------------------------------

 

 

텍스트 추출 함수
[code type=php] function strip_tags2(){ $search = array ("'<SCRIPT[^>]*?>.*?'si", // 자바 스크립트 제거 "'<[\/\!]*?[^<>]*?>'si", // HTML 태그 제거 "'<\!\-\-(.*)?\-\->'si", //주석제거 "'([\r\n])[\s]+'", "'&(quot|#34);'i", // HTML 엔티티 치환 "'&(amp|#38);'i", "'&(lt|#60);'i", "'&(gt|#62);'i", "'&(nbsp|#160);'i", "'&(iexcl|#161);'i", "'&(cent|#162);'i", "'&(pound|#163);'i", "'&(copy|#169);'i", "'&#(\d+);'e"); // php로 실행 $replace = array ("", "", "", "\\1", "\"", "&", "<", ">", " ", chr(161), chr(162), chr(163), chr(169), "chr(\\1)"); preg_replace($search,$replace,$data); }//end function


링크 추출 함수

[code type=php] function extract_link($file){ $data = file_get_contents($file); preg_match_all("/href=['\"]?([\?\&\=\/\.\_\:a-z0-9]+)['\"\s]?/i",$data,$out,PREG_SET_ORDER);//파라미터 사용할 경우 foreach($out as $key=>$val){ $link = $val[2]; if( ereg("\.gif|\.jpg|\.png|\.hwp|\.xls|\.swf|\.css|javascript:|mailto:",$link) ) continue; if( ereg("http://",$link ) ) if( !ereg($HOST,$link) ) continue; if( ereg("^..\/",$link) ){ $_link = $ROOT_URL."/".$link; } elseif ( ereg("^\/",$link) ) { $_link = $ROOT_URL.$link; } else { $_link = substr($lnk,0,strrpos($lnk,"/"))."/".$link; } $i++; if( !chkLink($_link) ) continue; $LINK[$i] = $_link; unset($text); extract_link($_link);//재귀호출 flush(); }//end of foreach }

 

[ 출처 : http://blueb.net/blog/886 ]