특정 스타일 제거 정규식 질문입니다
본문
preg_replace("/ style=(\"|\')?([^\"\']+)(\"|\')?/","",$content);
해당 코드는 content에 들어간 모든 style을 제거하는 정규식입니다
이거말고 text-align 스타일(style="text-align:center;")만 살린채 설정된 모든 스타일을 제거하고 싶은데요
정규식을 어떻게 짜야할까요...?
아니면 style=안에있는 background 나 color값만 제거하는 정규식이여도 괜찮습니다
도와주세요~
답변 3
제일 좋은 방법은 실제 코드를 가지고 https://regex101.com/ 에 넣어 보시면 됩니다.
preg_replace("/ color:([^\"\']+)\;?/","",$content);
처음에 스페이스가 있어야 되고.
다음에 color: 가 있어야 되고.
([^\"\']+) 는 "와 '가 아닌 글자가 하나이상을
\;? 는 ;가 있거나 없거나 입니다.
보통 style안의 식이
style="margin: 0; padding:0;background: #000; color:#fff; background-color: #eee;"
로 될텐데..
위와 같이 했을 때 동작된다고 해도, 실제로는 다른 코드도 날릴 확율이 있습니다.
background:와 "안의 모든 글자를 날릴것 같습니다.
!-->우선 규칙을 찾아야 될것 같습니다.
style안에 있는 background나 color에 대한 css는
background: 와 color: 으로 시작해서 ;으로 끝나니
preg_replace("/background:[^\;]+\;/gm","",$content);
preg_replace("/color:[^\;]+\;/gm","",$content);
식으로 처리하면 될것 같습니다.
시작은 background:로 하고 ;가 끝나기 전 모든 글자와 마지막에 ;로 끝나는 것은 모두(global, multiple)로 ""로 변경한다는 내용입니다.
!-->
preg_replace("/color:([^\;]+)\;/","",$content);
preg_replace("/background:([^\;]+)\;/","",$content);
preg_replace("/background-color:([^\;]+)\;/","",$content);
이론적으로는 위가 맞습니ㅏㄷ.
;가 아닌 하나 이상의 글자 그리고 마지막이 ;로..
!-->
답변을 작성하시기 전에 로그인 해주세요.