개발 꿀팁/PHP

php는 정칙으로 가로세로 스타일 제거

Jammie 2022. 9. 5. 16:49
반응형

작업상 필요에 따라 html를 채취해 데이터베이스에 저장해야 한다.사용에 지장을 주지 않도록 와이드 스타일을 삭제하셔야 합니다.예컨대 그림과 div에 있는 width, height 등이다.

그러나 채취한 html에는 대소문자, 중간에 빈 칸 등 양식이 다르다.

그래서 php 정칙으로 다음과 같은 방법을 써서 이 진기한 꽃들을 걸러낸다.

코드는 다음과 같습니다

<?php
/**
 * 가로 세로 스타일 지우기
 * @param  String $content 내용
 * @return String
 */
function clear_wh($content){
    $config = array('width', 'height');

    foreach($config as $v){
        $content = preg_replace('/'.$v.'\s*=\s*\d+\s*/i', '', $content);
        $content = preg_replace('/'.$v.'\s*=\s*.+?["\']/i', '', $content);
        $content = preg_replace('/'.$v.'\s*:\s*\d+\s*px\s*;?/i', '', $content);
    }

    return $content;
}
?>

데모:

<?php
$html = <<<HTML
<div style="text-align:center" width="500" height="300">
    <div style="Width : 100px ; Height: 100 px;">
        <img src="/images/test.jpg" width=400 height = 200>
        <div style="float:left; width: 100px; height : 200 px;"></div>
    </div>
    <div style="width :   100 px ;height: 100px">
        <img src="/images/test.jpg" width=400 height = 200>
    </div>
</div>
HTML;

echo '<xmp>';
echo '원내용:'.PHP_EOL;
echo $html.PHP_EOL.PHP_EOL;
echo '필터링된 내용:'.PHP_EOL;
echo clear_wh($html);
echo '</xmp>';
?>

출력:

원내용:
<div style="text-align:center" width="500" height="300">
    <div style="Width : 100px ; Height: 100 px;">
        <img src="/images/test.jpg" width=400 height = 200>
        <div style="float:left; width: 100px; height : 200 px;"></div>
    </div>
    <div style="width :   100 px ;height: 100px">
        <img src="/images/test.jpg" width=400 height = 200>
    </div>
</div>

필터링된 내용:
<div style="text-align:center"  >
    <div style=" ">
        <img src="/images/test.jpg" >
        <div style="float:left;  "></div>
    </div>
    <div style="">
        <img src="/images/test.jpg" >
    </div>
</div>
반응형