XML Encoding Name?
본문
http://sir.co.kr/bbs/board.php?bo_table=g4_skin&wr_id=152482&page=3
위 '말풍선' 최신글 스킨을 '그누보드 5'에 적용시켰습니다.
'먼지손'님의 도움으로 파일을 일부 수정하여 정상적으로 뜨고, 해당 글 주소로 들어가는 부분까지는 아무런 문제가 없습니다.
적용한 곳 : http://internationale.kr/index_example_4.php
그런데
http://internationale.kr/swf/talkopen.php
이 파일로 직접 접근하면... 불러온 최신글들의 '소스보기'가 되어야 하는데... 오류가 뜹니다.
스킨의 사용에는 아무런 지장이 없으나... 께림칙하여 혹 바로잡을 수 있는 방법이 없는지 문의드립니다.
아래는 수정한 'talkopen.php' 파일의 소스 전체입니다.
<?php
// 48시간 말풍선 최신글 스킨 2009년 8월 13일 목요일
// 부용님께서 만들어 주신 전체게시판을 사용할 수 있는 php입니다. UTF-8에서 사용하시면 됩니다.
// 전체새글에서 추출
$_gnu_url = ""; // 그누보드 루트
$g5_path = '..';
include_once($g5_path.'/common.php');
$turl = "http://internationale.kr/bbs/board.php?bo_table=free"; // 플래시 전체링크
$lines = 40; // 갯수
// 쿼리 조건외 제외시키고자 하는 그룹 및 게시판을 수동으로 추가
$excgr = "('song', 'photo', 'info', 'catholic', 'favorites', 'shop')"; // 제외 그룹
$excbo = "('history')"; // 제외 게시판
function specialchars_replace($str, $len=0)
{
if ($len)
{
$str = substr($str, 0, $len);
}
$str = preg_replace("/&/", "&", $str);
$str = preg_replace("/</", "<", $str);
$str = preg_replace("/>/", ">", $str);
return $str;
}
Header("Content-type: text/xml");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
echo "<?xml version=\"1.0\" encoding=\"".$g5[charset]."\"?>\n";
echo "<rss>\n";
$sql_common = " from " . $g5['board_new_table'] . " a, " . $g5['board_table'] . " b, " . $g5['group_table'] . " c where a.bo_table = b.bo_table and b.gr_id = c.gr_id and b.bo_use_search = '1' ";
if (!empty($gr_id))
$sql_common .= " and b.gr_id = '$gr_id' ";
$sql_common .= " and b.gr_id not in " . $excgr . " and b.bo_table not in " . $excbo . " "; // 제외설정
$sql_common .= " and a.wr_id = a.wr_parent ";
$sql_order = " order by a.bn_id desc ";
$sql = " select a.*, b.bo_subject, c.gr_subject
$sql_common
$sql_order
limit $lines ";
$result = sql_query($sql);
for ($i=0; $row=sql_fetch_array($result); $i++)
{
$tmp_write_table = $g5['write_prefix'] . $row['bo_table'];
$row2 = sql_fetch(" select * from $tmp_write_table where wr_id = '" . $row['wr_id'] . "' ");
// 비밀글이면 통과
if (preg_match("`secret`", $row2['wr_option'])) continue;
$wr_subject = specialchars_replace(iconv("UTF-8", "EUC-KR", $row2[wr_subject]));
$wr_link = specialchars_replace(G5_BBS_URL."/board.php?bo_table=" . $row['bo_table'] . "&wr_id=" . $row['wr_id']);
//$wr_content = $row2['wr_content'];
$wr_name = specialchars_replace(iconv("UTF-8", "EUC-KR", $row2[wr_name]));
$wr_date = $row2['wr_datetime'];
$wr_date = date('r', strtotime($wr_date));
echo "<list turl=\"".$turl."\">\n";
echo "<dd><![CDATA[".$wr_name."]]></dd>\n";
echo "<ct>".$wr_date."</ct>\n";
echo "<tt><![CDATA[".$wr_subject."]]></tt>\n";
echo "<uu>".$wr_link."</uu>\n";
echo "</list>\n";
}
echo "</rss>";
?>
echo "<?xml version="1.0" encoding="utf-8"?>\n";
이렇게 수정하면... 그나마 뜨던 풍선이 모두 자취를 감춥니다.
답변 2
중간중간 iconv보니깐 iconv(
"UTF-8"
,
"EUC-KR"
,
$row2
[wr_name])
이렇게 해두셨던데...
euc-kr문서 아니신가요?
iconv가 앞에꺼에서 중간꺼로 뒤에있는 문자열을 변환시키는거 아닌가요?ㅎㅎ
32라인
//echo "<?xml version=\"1.0\" encoding=\"".$g5[charset]."\"?>\n";
echo "<?xml version=\"1.0\" encoding=\"euc-kr\"?>\n";
미쳐 문서 전체를 못봤었군요;
문서타입도 ansi인거죠?