테스트 사이트 - 개발 중인 베타 버전입니다

특정 스타일 제거 정규식 질문입니다 채택완료

Policia 5년 전 조회 1,546
preg_replace("/ style=(\"|\')?([^\"\']+)(\"|\')?/","",$content);

해당 코드는 content에 들어간 모든 style을 제거하는 정규식입니다

 

이거말고 text-align 스타일(style="text-align:center;")만 살린채 설정된 모든 스타일을 제거하고 싶은데요

정규식을 어떻게 짜야할까요...?

 

아니면 style=안에있는 background 나 color값만 제거하는 정규식이여도 괜찮습니다

도와주세요~

댓글을 작성하려면 로그인이 필요합니다.

답변 3개

채택된 답변
+20 포인트
5년 전

제일 좋은 방법은 실제 코드를 가지고 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
Policia
5년 전
감사합니다 띄어쓰기까지 포함되는걸 몰랐네요 ㅎㅎ
preg_replace("/color:([^\"\']+)\;/","",$content);
preg_replace("/background:([^\"\']+)\;/","",$content);
preg_replace("/background-color:([^\"\']+)\;/","",$content);
이렇게 마무리하였습니다 잘작동하네요

댓글을 작성하려면 로그인이 필요합니다.

5년 전

</p>

<p>preg_replace("/color:([^\;]+)\;/","",$content);

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

preg_replace("/background-color:([^\;]+)\;/","",$content);</p>

<p>

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

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

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

P
Policia
5년 전
감사합니다 !!! 많은 도움이되었습니다

댓글을 작성하려면 로그인이 필요합니다.

5년 전

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

 

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개

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

이런식으로 background는 날리는건 성공했는데
preg_replace("/ background:([^\"\']+)\;?/","",$content);
preg_replace("/ background-color:([^\"\']+)\;?/","",$content);

preg_replace("/ color:([^\"\']+)\;?/","",$content);
color는 무슨이유에서인지 안먹히네요 ...

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인