게시판에서 저장된 tags이 모듈에서 저장된 a값과 같은 경우, 뭔가 출력하는 기능이 있는데
tags값에 슬래쉬가 있는 경우엔 일치해도 작동을 안해서 어찌 어찌 분석하다보니 tag 값에는 슬래쉬 앞에 백슬래쉬가 자동으로 붙습니다.
예)
모듈에서 저장된 a값(데이타베이스에서 확인): Describe your grandpa/grandma's job
게시판에 저장된 tag값(그냥 출력해서 확인): Describe your grandpa\/grandma's job
관련 코드 1:
{@ $tag_desc = getModel('tag_description')->getTagDescription($oDocument->get('module_srl'),$oDocument->get('tags')); } <!--@foreach($tag_desc as $no => $td)--> <!--@if(in_array($td->td, explode(',',$search_td)))--> {@ $replace_td = preg_replace('/'.$td->td.'/', '', $search_td); $replace_td = preg_replace('/(^,|,$|,,)/', '', $replace_td); } <a href="{getUrl('search_td',$replace_td,'search_card','')}"> <span class="tag_description" style="{$td->css}"|cond="$td->css">{$td->td}</span>
관련 코드 2(게시판에서 태그값 입력받는 부분):
<input class="ppip" type="text" name="tags" id="tags" value="{htmlspecialchars($oDocument->get('tags'))}" placeholder="{$lang->tag}: {$lang->about_tag}" />
해결해보려고, 관련 코드 1에서 tags 값에서 \를 뺀다음에 찾도록 하면 되겠지 싶어서, gpt 빌고, 어르고 달래고, 화내고 오만가지 방법을 해봐도 백슬래쉬가 안떨어져요. 관련 코드 2에서 /를 입력할때 백슬래쉬가 안붙도록 해볼까 또 빌고 읍소하고 다 해봤지만 안되었습니다.
고수님의 조언부탁드립니다.
슬래시 앞에 백슬래시를 끼워넣는 것은 json_encode 함수가 흔히 하는 짓인데,
올려주신 코드에서 json 관련된 처리를 하는 부분은 보이지 않습니다.
(htmlspecialchars나 addslashes는 이미 있는 슬래시 문자를 건드리지 않으므로 무죄입니다.)
혹시 tag_description 모듈의 getTagDescription 함수에서
json_encode 함수를 쓰는 부분이 있는지 살펴보시면 도움이 될 것 같네요.
만약 json_encode가 있다면
보안이나 그 밖의 다른 이유로 중요할 수도 있으니 함부로 제거하면 안 되고,
JSON_UNESCAPED_SLASHES 플래그를 끼워넣어서
네 슬래시 건드리지 마! 라고 알려주는 것이 이상적입니다.