안녕하세요. 하루 하루 평온하게 넘어가는 날이 없네요;;
아래와 같은 에러가 나는데 항상 나는 건 아니고, 어쩌다? 나는 것 같습니다.
에러 메세지:
문제가 나오는 line 69는 '{@ echo str_replace("\n", '<br />', $value->answer); }' 이고
$value->answer 값은 아마도 API 응답으로 받는 값인데 정상이 아닌경우? 에러가 나는게 아닐까 하는 생각입니다.
이 라인을 아예 지우면, 에러 메세지는 나오지 않지만 해당하는 내용(?)이 안나오고,
ChatGPT의 조언에 따라, $value->answer 가 문자열인 경우와 아닌 경우, 빈 값인 경우 나눠서 분기처리를 하면
'syntax error, unexpected end of file' 이런 에러가 나게됩니다..
정상으로 나오는 페이지 링크: https://scorefactory.io/factory2ielts/2505724?list_type=card&search_target=tag&search_keyword=Describe+a+time+when+you+answered+a+phone+call+from+someone+you+didn%26%23039%3Bt+know+in+a+public+place
조언 구해 봅니다 ㅠ.ㅠ
<div class="advice-section-item" data-key="{$key}"> <div class="advice-section-item__title"> {$value->title} </div> <div class="advice-section-item__content"> <!--@if(str_ends_with($key, '-audio') && $value->file_srl && $value->sub_srl)--> {@ $value = $__Context->value; $output = executeQueryArray("ai_voice.getVoiceInfoByTargetSrl", [ 'target_srl' => $value->sub_srl, ]); $val = (object)[ 'comment_srl' => $value->sub_srl, 'file_srl' => $value->file_srl, 'sid' => $output->data[0]->sid, 'uploaded_filename' => FileModel::getFile($value->file_srl)->uploaded_filename, ]; $msCount = $value->sub_srl; $zModel = getModel("z_music"); $specIsMobile = $zModel->checkMobile(); $specCutStrNickLength = 16; $specCutStrContentLength = 40; if ($specIsMobile === true): $specCutStrNickLength = 10; $specCutStrContentLength = 20; endif; $specApiUrl = getNotEncodedFullUrl("") . "modules/z_music/lib/zp/publisher.php"; eval(base64_decode('JHZhbHVlID0gJF9fQ29udGV4dC0+dmFsdWU7CgkJCQkJCSRvdXRwdXQgPSBleGVjdXRlUXVlcnlBcnJheSgiYWlfdm9pY2UuZ2V0Vm9pY2VJbmZvQnlUYXJnZXRTcmwiLCBbCgkJCQkJCQkndGFyZ2V0X3NybCcgPT4gJHZhbHVlLT5zdWJfc3JsLAoJCQkJCQldKTsKCQkJCQkJJHZhbCA9IChvYmplY3QpWwoJCQkJCQkJJ2NvbW1lbnRfc3JsJyA9PiAkdmFsdWUtPnN1Yl9zcmwsCgkJCQkJCQknZmlsZV9zcmwnID0+ICR2YWx1ZS0+ZmlsZV9zcmwsCgkJCQkJCQknc2lkJyA9PiAkb3V0cHV0LT5kYXRhWzBdLT5zaWQsCgkJCQkJCQkndXBsb2FkZWRfZmlsZW5hbWUnID0+IEZpbGVNb2RlbDo6Z2V0RmlsZSgkdmFsdWUtPmZpbGVfc3JsKS0+dXBsb2FkZWRfZmlsZW5hbWUsCgkJCQkJCV07CgkJCQkJCSRtc0NvdW50ID0gJHZhbHVlLT5zdWJfc3JsOwoJCQkJCQkkek1vZGVsID0gZ2V0TW9kZWwoInpfbXVzaWMiKTsKCQkJCQkJJHNwZWNJc01vYmlsZSA9ICR6TW9kZWwtPmNoZWNrTW9iaWxlKCk7CgkJCQkJCSRzcGVjQ3V0U3RyTmlja0xlbmd0aCA9IDE2OwoJCQkJCQkkc3BlY0N1dFN0ckNvbnRlbnRMZW5ndGggPSA0MDsKCQkJCQkJaWYgKCRzcGVjSXNNb2JpbGUgPT09IHRydWUpOgoJCQkJCQkJJHNwZWNDdXRTdHJOaWNrTGVuZ3RoID0gMTA7CgkJCQkJCQkkc3BlY0N1dFN0ckNvbnRlbnRMZW5ndGggPSAyMDsKCQkJCQkJZW5kaWY7CgkJCQkJICAkc3BlY0FwaVVybCA9IGdldE5vdEVuY29kZWRGdWxsVXJsKCIiKSAuICJtb2R1bGVzL3pfbXVzaWMvbGliL3pwL3B1Ymxpc2hlci5waHAiOw==')); include _XE_PATH_ . "modules/z_music/lib/inc/player.php"; $zModel = getModel("z_music"); $transHtml = $zModel->makeSpeechText( DB::getInstance(), $val, $zModel->getConfig(), $value->sub_srl ); eval(base64_decode('ZWNobyAkcGxheWVySHRtbDs=')); // echo $playerHtml; echo $transHtml; } <!--@else--> {@ echo str_replace("\n", '<br />', $value->answer); } <!--@endif--> </div> </div>
원인은 $value->answer 이 문자열이 아니라 json 형태일때 (API가 잘못응답함), 이런 문제가 생기는 것 같아요.
그래서 ChatGPT의 조언대로 아래와 같이 고치면 되어야할 것 같은데, 'syntax error, unexpected end of file' 이 에러를 생성하네요.