게시판 리스트에서 본문 요약을 불러오곤 하는데, 본문에 <p> </p>가 연달아 있거나 하면 요약문에도 빈 칸이 <p> </p>의 숫자만큼 반영되고 있습니다.
그래서 str_replace(" ", " ", $document->getSummary(200)) 등을 해봤는데, 그래도 공백이 전혀 압축되지를 않아요.
document.item.php를 건드려봐도 영 반응이 없구요;;;
혹시 방법 없을까요? 리스트에 출력된 요약문 보기가 좀 많이 흉해요ㅠㅠ

윤삼
Lv. 19
아무래도 중급 초반 수준의 코딩 오타쿠인 것 같습니다.
댓글 6
str_replace(" ", " ", $document->getSummary(200)) 해보셨나요?
말씀하신 거에 str_replace를 한번 더 해보라는 말씀이시죠?
이따 집에 도착하면 한번 시도해보겠습니다!
{str_replace(" ", " ", str_replace(" ", " ", $document->getSummary(200)))}로 했는데도 역시 안 돼요ㅠㅠ
심지어 {str_replace(" ", " ", str_replace(" ", " ", $document->getSummary(200)))}으로도 해봤는데요, 모든 공백이 사라짐에도 불구하고 문제가 되는 두 칸 짜리 공백은 계속 한 칸으로 남아 있습니다ㅠㅠ
결국엔 이걸로 성공했습니다.
{preg_replace("/\s+/", " ", str_replace(" ", "", $document->getSummary(200)))}
근데 기진곰님, 이상한 게 있어요. 그냥 보기에도 위의 구문은 많이 이상하죠?
사실, str_replace(" ", "", $document->getSummary(200)) 에서요, 따옴표 사이에 있는 애(" ")가 좀 많이 이상합니다.
정체를 알 수가 없는데, 암튼 그냥 공백이 아니에요!
(지금 여기 에디터에 이 녀석이 제대로 복붙 되는지 모르겠어요.)
처음엔 이것 저것 해보다가, str_replace(" ", " ", $document->getSummary(200)) 이렇게 해봤었거든요.
(이번 따옴표 사이에 있는 건 그냥 스페이스입니다.)
그리고 소스보기를 해봤더니 이런 식으로 나오더라구요.
기진곰은 정말 멋쟁이에요. 정말이에...
사이에 요상한 칸이 생긴 거죠.
뭔가 이상하다 싶어서 str_replace(" ", " ", str_replace(" ", " ", $document->getSummary(200))) 이렇게 타이핑을 해봤어요.
그냥 타이핑을 한 거니까 사이는 스페이스 바 한 칸인 거죠.
어쨌거나 여전히 출력문은, 기진곰은 정말 멋쟁이에요. 정말이에... 으로 나오는 겁니다.
그러니까 따옴표 사이에 있던 애(" ")가 그냥 스페이스가 아니었던 거예요.
코딩할 때 저는 보통 노트패드2를 쓰는데, 거기서도 그렇고 메모장에서도 그렇고 인식하지 못하는 뭔가 이상한 문자였던 게 아닐까요?
암튼 그래서 이 녀석을 긁어다가 {preg_replace("/\s+/", " ", str_replace(" ", "", $document->getSummary(200)))}로 (1)일단 요상한 녀석을 없애주고 (2)공백문자가 중복되는 부분들을 한 칸으로 압축했더니, 요약문이 제대로 출력된 겁니다.
아마도 문제의 비밀은 content에서 <p> </p> 자리에 있지 않나 싶어요.
구체적으로 그게 뭔진 잘 모르겠지만요;;;
혹시 어떻게 된 사정인지 알 수 있을까요?
https://en.wikipedia.org/wiki/Whitespace_character#Unicode
아마 이 중에 하나였을 거예요. 그냥 스페이스를 찾아서 치환하라고 하니까 못 찾고, 정규식으로 공백 다 찾으라고 하니까 그제서야 찾을 수 있는... 아마 해당 문자열을 bin2hex() 해보면 16진수로 어떤 코드인지 정확히 알 수 있겠죠. 평범한 스페이스는 20입니다.
말씀하신대로 bin2hex로 해보니 c2a0라고 나오더군요. U+00A0면 그냥 아닌가요?
그치만 str_replace(" ", " ", $변수)로도 안 잡혔던 걸 보면, 다른 종류의 no-break space 같기도 하고 그러네요ㅎㅎ
검색 결과, {preg_replace("/\s+/", " ", str_replace("\xc2\xa0", " ", $document->getSummary(200)))} 이 가장 간결한 해법인 것 같아서 적용했습니다.
도움 감사합니다~!