[ 특정 HTML 제거 ]
특정 HTML 태그들이 간혹 문제를 일으킬 때가 있다.
예를 들어, "<form .. ></form>태그와 같은 경우 특히 문제를 발생 시키는 경우가 많다.
RegEx 을 통한 제거를 해주시면 됩니다.
$html = 'Approval form <form action="test.php">test</form> tag Remove<br />
(NEW LINE) carriage return line feed';
//$pattern = "/<form(.*?)<\/form>/i";
//$pattern = "/<form(.*?)<\/form>/is";
$pattern = "/<form[^>]+\>/i";
$pattern2 = "/<\/form>/i";
$html = preg_replace($pattern,"",$html);
$html = preg_replace($pattern2,"",$html);
print "$html\n";
결과:
Approval form test tag Remove<br /> | |
(NEW LINE) carriage return line feed |
참고: Using PHP to Remove an HTML Tag from a String
[ 특정 HTML 허용 ]
특정 HTML 태그만 허용해 줄때.
$text = '<p>Test paragraph.</p><!-- Comment --> <a href="#fragment"><span style="color:red">Other text</span></a>';
echo strip_tags($text);
echo "\n";
// Allow <p> and <a>
echo strip_tags($text, '<p><a>');
결과:
Test paragraph. Other text
<p>Test paragraph.</p> <a href="#fragment">Other text</a>
[ MS Office XSL 태그 삭제 ]
word와 같은 내용을 Editor(SmartEditor, Tiny등)에 내용을 붙여 넣기를 한다면, 다음과 같이 발생합니다.
문자열이 클립보드에 담기게 됩니다.
<o:OfficeDocumentSettings>
<o:AllowPNG/>
</o:OfficeDocumentSettings>
</xml><![endif]--></p><p><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:PunctuationKerning/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-US</w:LidThemeOther>
<w:LidThemeAsian>KO</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
(PHP) 해당 내용을 삭제하기
// (Feb 2016 Daniel) Approval form <form></form> tag Remove, (April 2016 Daniel) Office XSL tag Remove
$removeArr = array("/<form[^>]+\>/i", "/<\/form>/i", "/<m:[^>]+\>/i", "/<\/m:[^>]+\>/i", "/<o:[^>]+\>/i", "/<\/o:[^>]+\>/i", "/<w:[^>]+\>/i", "/<\/w:[^>]+\>/i", "/<xml[^>]+\>/i", "/<\/xml>/i");
foreach ($removeArr as $str) {
$p_CONTENTS = preg_replace($str,"",$p_CONTENTS);
}
특정 테그 삭제
HTML Purifier?will create standards compliant markup and filter out many possible attacks (such as XSS).
For faster cleanups that don't require XSS filtering, I use the PECL extension?Tidy?which is a binding for the?Tidy HTML?utility.
If those don't help you, I suggest you switch to FCKEditor which has this feature?built-in.
참고: PHP to clean-up pasted Microsoft input (Stackoverflow.com)
참고2: filtering MS HTML - PHP Labware Interernal utilites : htmlLawed
'WEB언어 > PHP' 카테고리의 다른 글
날짜 포멧 yyyy-dd-mm을 dd/mm/yyyy 변환 (0) | 2017.06.24 |
---|---|
[php] Last Week, This Week, 지난주 다음주 알기, 지난주 일요일 (0) | 2017.06.17 |
PHP 5.x 에서 PHP 7으로 업그레이드시 작업 (0) | 2017.06.15 |
PHP 다음달 구하기 mktime(0,0,0,date("m")+1,15,date("Y"))) (2) | 2016.08.01 |
time — Return current Unix timestamp (0) | 2015.04.29 |
php 문자열 자르기 substr() 함수 explode() (0) | 2014.10.26 |
php money_format 변환 - 미국 형식 화폐 / MySQL 일자포멧 / 요일확인 (0) | 2014.10.23 |
php + mysql 웹 페이지 한글 깨짐 현상 처리 (0) | 2014.10.22 |
(로그인하지 않으셔도 가능)