특정 스타일 제거 정규식 질문입니다 채택완료
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안의 식이
</p>
<p>style="margin: 0; padding:0;background: #000; color:#fff; background-color: #eee;"</p>
<p>
로 될텐데..
위와 같이 했을 때 동작된다고 해도, 실제로는 다른 코드도 날릴 확율이 있습니다.
background:와 "안의 모든 글자를 날릴것 같습니다.
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
</p>
<p>preg_replace("/color:([^\;]+)\;/","",$content);
preg_replace("/background:([^\;]+)\;/","",$content);
preg_replace("/background-color:([^\;]+)\;/","",$content);</p>
<p>
이론적으로는 위가 맞습니ㅏㄷ.
;가 아닌 하나 이상의 글자 그리고 마지막이 ;로..
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
우선 규칙을 찾아야 될것 같습니다.
style안에 있는 background나 color에 대한 css는
background: 와 color: 으로 시작해서 ;으로 끝나니
</p>
<p>preg_replace("/background:[^\;]+\;/gm","",$content);</p>
<p>preg_replace("/color:[^\;]+\;/gm","",$content);</p>
<p>
식으로 처리하면 될것 같습니다.
시작은 background:로 하고 ;가 끝나기 전 모든 글자와 마지막에 ;로 끝나는 것은 모두(global, multiple)로 ""로 변경한다는 내용입니다.
답변에 대한 댓글 1개
해당 식을 적용하니 내용이 다날아가버립니다 ㅠㅠ
이런식으로 background는 날리는건 성공했는데
preg_replace("/ background:([^\"\']+)\;?/","",$content);
preg_replace("/ background-color:([^\"\']+)\;?/","",$content);
preg_replace("/ color:([^\"\']+)\;?/","",$content);
color는 무슨이유에서인지 안먹히네요 ...
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
preg_replace("/color:([^\"\']+)\;/","",$content);
preg_replace("/background:([^\"\']+)\;/","",$content);
preg_replace("/background-color:([^\"\']+)\;/","",$content);
이렇게 마무리하였습니다 잘작동하네요