특정 스타일 제거 정규식 질문입니다

특정 스타일 제거 정규식 질문입니다

QA

특정 스타일 제거 정규식 질문입니다

답변 3

본문

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:와 "안의 모든 글자를 날릴것 같습니다.

감사합니다 띄어쓰기까지 포함되는걸 몰랐네요 ㅎㅎ
preg_replace("/color:([^\"\']+)\;/","",$content);
preg_replace("/background:([^\"\']+)\;/","",$content);
preg_replace("/background-color:([^\"\']+)\;/","",$content);
이렇게 마무리하였습니다 잘작동하네요

우선 규칙을 찾아야 될것 같습니다.

 

style안에 있는 background나 color에 대한 css는

 

background: 와 color: 으로 시작해서 ;으로 끝나니

 


preg_replace("/background:[^\;]+\;/gm","",$content);
preg_replace("/color:[^\;]+\;/gm","",$content);

 

식으로 처리하면 될것 같습니다.

시작은 background:로 하고 ;가 끝나기 전 모든 글자와 마지막에 ;로 끝나는 것은 모두(global, multiple)로 ""로 변경한다는 내용입니다.

답변감사합니다
해당 식을 적용하니 내용이 다날아가버립니다 ㅠㅠ

이런식으로 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);

이론적으로는 위가 맞습니ㅏㄷ.

;가 아닌 하나 이상의 글자 그리고 마지막이 ;로.. 

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 220
© SIRSOFT
현재 페이지 제일 처음으로