개발 Q&A

제목 json 질문드립니다.
글쓴이 케케케 작성시각 2013/03/15 11:19:42
댓글 : 17 추천 : 0 스크랩 : 0 조회수 : 19285   RSS
data를 json형태로 뿌려주는데요

내용같은건 다음에디터를 장착해서 쓰고있습니다.


에디터의 툴인 글꼴,문단띄우기, 정렬.....등등을 쓰면
db에는 font size, align=center, <p>   이런식으로 그대로 DB에들어가자나요
일반적인 출력형태는 html태그를 인식하기때문에 다 적용되서 보이겟지만

json형태로하니 저런 태그 자체가 그대로 붙어서 들어가네요

에디터의 툴 적용한것은 유지하면서
html 태그가 안붙게하는방법은 업을까요
 다음글 CI 에서 hook 사용하는 방법 (1)
 이전글 세션 유지시 체크하는 시간 (2)

댓글

변종원(웅파) / 2013/03/15 11:41:15 / 추천 0
전 처음에 회사에 입사했을때 부장님이 함수 참고를 위한 레퍼런스 한권, 활용서 한권은 꼭 곁에 두라고
했습니다. 

php에는 경력 14년차인 저도 생소한 함수가 엄청 많습니다. 

요즘은 인터넷으로 php.net 접속하셔서 함수쪽 한번 쭉 훑어보시면 그게 레퍼런스입니다.

문자열 부분 들어가서 보세요. 

함수명 하나 알려드릴 수 있지만 앞으로 도움 되시는건 모를때 어디서 어떻게 하면
빨리 원하는 답을 찾을 수 있는지 일것 같아 글 남깁니다.
케케케 / 2013/03/15 11:54:36 / 추천 0

웅파님 답변 감사합니다.
함수로 html태그가 적용이 되지만
json형태로 html를 태그는 출력이 안되는게 가능하긴할까요?
단순이 태그를 지우는것이 아니라 에디터의 툴 적용이 되면서
태그가 안들어가야 하는데....ㄷㄷ

변종원(웅파) / 2013/03/15 12:02:41 / 추천 0
이해가 안되는데요?

에디터 툴 적용은 되면서 태그가 안들어가게 한다니요? 그건 개발자 마음인데요?

에디터 툴바에 html태그 관련 된 것은 유지하면서 실제 전송할때는 태그를 빼고 싶으신건가요?

아니면 전송하고 db에 넣을때도 유지가 되어야 하는건가요?

질문을 이해를 못하겠네요. ㅎㅎㅎ

제가 함수이야기를 한 것은 어떤 상황이던지 그 상황에 맞는 함수 하나 쓰면 되기 때문입니다.

첫번째 라면 내용에서 소스 제거 하는 함수 하나 실행해서 보내면 되구요.

두번째 라면 내용 자체를 압축하거나 다른 형태로 변형해서 전송하면 되구요.

둘다 각기 다른 php함수 하나로 처리가 됩니다.
헛발이 / 2013/03/15 12:36:15 / 추천 0
아 질문이 이해 되네요...
그건 직접 다음에디터에 넣으면 안됩니다.. 그러면 자동으로 테그가 붙어요...
에디터 안에서 엔터를 치거나 하면 붙게 되죠...

다음에디터에 보면 외부컨텐츠 부분이 있는데 그거 처럼 직접 textarea에 작성해서 그 내용을 직접 붙여 넣기를 해야 개행같은걸 테그 안 먹고 들어갑니다...


케케케 / 2013/03/15 13:33:44 / 추천 0
웅파님 제가 말슴드린건 예를들어 다음에디터에서 글 폰트 14에 가운데정렬을하면
실제로 db에 삽입되는것은 <font size=14><p align="center"> 이런식으로 들어가자나요

그래서 json형태로 불러와도  그 태그까지 그대로 불러와지는것을  막기 위한 질문입니다.
위에 태그는 적용되어지고
json으로 출력할때 html관련 태그들은 안나타나게 하고싶은것입니다
케케케 / 2013/03/15 13:43:05 / 추천 0
[{"num":"64","title":"\uc13c\ud130\uc5d0 \ucd9c\ub825","tx_content":"\uc13c\ud130\uc5d0 \ucd9c\ub825","type":"All","register_day":"2013-03-15","hits":"0","flag":"y"},{"num":"63","title":"testtest","tx_content":"

testtest<\/p>

testtest<\/p>

testtest<\/p>

이유는 모르겟는데 닫는태크에 \ 가 하나 더붙어서 나오네요 내용이나 제목에도 마찬가지고
stripslashes 함수를써도 안되네요 ㄷ
에디터 말고는 따로 제가 건드리는것은 업습니당

milosz / 2013/03/15 13:56:40 / 추천 0
 \가 붙어서 나오는 이유는 escape 문자이기 때문에 붙어 나오는 것이고 실 처리상에서는 나타나지 않습니다.
 
json에서 태그를 없애고 불러오기보다 태그가 있는 json을 js단에서 처리할 때 태그를 지워 사용하는 방식으로 처리하는게 바람직합니다.
milosz / 2013/03/15 14:06:48 / 추천 0
php단에서 처리를 해서 json을 출력하고 싶다면 대~충 이런 방식으로 하시면 됩니다.
 
<?php

$content = '[{"num":"64","title":"\uc13c\ud130\uc5d0 \ucd9c\ub825","tx_content":"\uc13c\ud130\uc5d0 \ucd9c\ub825","type":"All","register_day":"2013-03-15","hits":"0","flag":"y"},{"num":"63","title":"testtest","tx_content":"testtest<\/p>testtest<\/p>testtest<\/p>"}]';

$obj = json_decode($content);

foreach($obj as &$content) {
  foreach($content as &$item) {
    $item = strip_tags($item);
  }
}

$content = json_encode($obj);

print $content;
변종원(웅파) / 2013/03/15 14:18:20 / 추천 0
결국 첫번째인거네요. 저도 그렇게 이해를 해서 함수 찾아보라고 말씀드렸던 거구요. ㅋ
milosz님이 함수를 콕 집어주셨네요.
케케케 / 2013/03/15 14:46:01 / 추천 0

감사합니다  웹에서는 잘되는데 앱에서는 못받아오네요 ㅠㅠㅠ

milosz / 2013/03/15 14:49:41 / 추천 0
레퍼런스와 로그만 있다면 해결은 시간 문제입니다.
화이팅이에요 :)
케케케 / 2013/03/15 15:06:03 / 추천 0
아마 제 생각인데 저 상태에서는 stripslahes를 써야한다고 생각합니다
말씀드린대로하니 정상적인 출력은 되지만 에디터를 적용한값이 의미가업어지죠

저렇게하면 웹과 앱 모두에서 출력은됩니다. 다만 에디터 적용값은 안들어가구요

저기에는 닫는태그나 레코드 사이사이 \가 잇어  \제거함수인 stripslahes를 써보니
웹에서는 에디터를 적용한값도 정상적으로 출력되더군요
하지만  앱에서는 불러오질 못하네요....ㅠㅠ

아 그리고 원래 json형태로 출력하면 값이 암호화 되서 나오나요?
ud14 ua234 ub45 이런식으로 나오네요
milosz / 2013/03/15 15:32:50 / 추천 0
JSON은 object입니다. 저 json을 text/plain으로 그대로 받아 처리하는게 아니라 object로 변환해야 제대로 쓸 수 있습니다. 그래서 \라는 escape 문자가 붙는겁니다. \uc13 는 암호화 되는 것이 아니라 유니코드라서 저렇게 표시 된 거구요.
 
제가 글주변이 부족해 이해하기 쉽게 설명을 못하고 있는듯 하네요.
JSON에 대한 문서를 확인해보시는게 도움이 될겁니다. ^^
한대승(불의회상) / 2013/03/15 23:10:32 / 추천 0
헛발이// 방가.. ^^
헛발이 / 2013/03/16 12:52:38 / 추천 0
불의회상님도 방가방가~