포럼
소스에는 아무 문제가 없는것 같은데.. 왜 작동을 안할까요..
2013.08.05 22:43
XE를 만지다보면 참 희한한 일들이 많이 일어납니다. 이번에도 그런 경우인데요 바로 아래 문제입니다.
송동우님의 예전 글, 그리고 sejin님의 도움으로 [게시글 작성시 몇자 이상 작성해야 글 등록이 가능]하도록 적용했습니다.
comment.controller.php
에서
function insertComment($obj, $manual_inserted = false) {
밑에
if(strlen(str_replace(' ','',strip_tags($obj->content)))<150&&Context::get('mid')=='게시판mid') return $this->stop('minimum 150');
이거 삽입.
문제는 (str_replace(' ','',strip_tags($obj->content)) 이부분이 제대로 먹히지 않습니다.
해당 부분은 공백까지 계산되는걸 막아주는 소스인데 ' ','' 이게 안먹힙니다.
다른 글자 넣으면 기가막히면 계산에서 제외 시켜주는데 공백은 씨알도 안맥힙니다.
정말 미치겠어요
댓글 6
-
투씨
2013.08.05 23:08
-
HEARTEYE
2013.08.05 23:50
투씨님 관심가져주셔서 감사합니다.
알려주신대로 한번 해봤는데요 공백을 확실하게 제거해주는거 같습니다 ^^
공백을 아무리 집어넣어도 계산에서는 아무 영향을 끼치지 못하네요!
그런데 이번에는 문자 계산을 제대로 못하는거 같아요...
예를 들어 위 식에 150 대신 10을 넣고 abc 이렇게 세글자만 작성했는데도 작성이 되더라구요;;
이 문제는 어떻게 해결해야 할까요?
-
투씨
2013.08.06 00:02
&& Context::get('mid') == '게시판mid'
이 부분 때문일수도 있을 것 같은데요... 빼고 한번 해보세요.
그래서 작동을 한다면 받아온 게시판 mid와 현재 게시판 mid가 안 맞아서 그럴수 있을거라고 봅니다.
-
HEARTEYE
2013.08.06 18:36
아.. 제가 설명을 잘못 드린것 같습니다.
($str_text)<10
이런식으로 작성했다고 하면, 원래 10글자를 안넘으면 작성이 되지않아야 하는데
'ㅁ' 이렇게 한글자만 써도 바로 작성이 됩니다.
($str_text)<20
숫자를 20으로 바꾸면, 'ㅁㄴㅇㄹ' 4글자까지는 등록이 안되고
'ㅁㄴㅇㄹㅎ' 이렇게 5글자는 또 등록이 됩니다.
알려주신 방법을 이용하기전에는 띄어쓰기 포함하여 글자 하나당 1로 인식을 했었는데 알려주신 방법을 적용한 후에는 글자 하나당 1로 인식을 하지 않고 뭔가 특별한 수로 인식을 하는것 같습니다..
- 알려주시기 전 방법을 사용했을때-
($str_text)<10
'ㅁㄴㅇㄹㅎㅁㄴㅇㄹㅎ' (10글자) 등록 가능
'ㅁㄴㅇㄹㅎㅁㄴㅇㄹ' (9글자) 등록 불가능
ㅠㅠ 자꾸 귀찮게 해드려서 죄송합니다
-
투씨
2013.08.06 23:13
그럼 아래를
if(strlen($str_text)<150 && Context::get('mid') == '게시판mid') return $this->stop('minimum 150');
다음처럼 바꿔 적용해보세요.
if(mb_strlen($str_text,"UTF-8")<150 && Context::get('mid') == '게시판mid') return $this->stop('minimum 150');mb_strlen($str_text,"UTF-8")은 한글일 경우 한 글자를 "1"로 인식을 합니다.
뒤에 붙는 UTF-8은 시스템에 맞춰주면 됩니다.(EUC-KR 혹은 CP949)
-
HEARTEYE
2013.08.07 10:26
음.. 해봤는데 여전히 같은 상황입니다 ^^;;
이게 속을 많이 썩이네요 ㅠ
아무래도 그냥 하지 말라는 XE님(?)의 뜻인듯 ㅋ.ㅋ
이제 그만 알려주셔도 될 것 같아요;; 더 여쭤보기엔 이젠 죄송스럽기까지해서;;
그동안 관심가져주시고 잘 알려주셔서 감사했어요. ^^
$str_text = str_replace(' ', '', $obj->content);
$str_text = str_replace(' ', '', $str_text);
if(strlen($str_text)<150 && Context::get('mid') == '게시판mid') return $this->stop('minimum 150');
위처럼 해보시면 어떨까요?...