์ด๋ฒ์ STUZM์ ๊ฐ๋ฐํ๋ฉฐ ๊ธฐ๋ฅ ์ค ํ๋๋ก ๊ธ์ ๋ฐ ์๊ฐํ๋ฅผ ๋ณด์ฌ์ฃผ๋ ๊ธฐ๋ฅ์ ๋ฃ๊ฒ ๋์ด, ํด๋น ๊ธฐ๋ฅ์ ์ด๋ป๊ฒ ๊ฐ๋ฐํ๋์ง ํ๋ฒ ์ ์ด๋ณด๋ ค ํฉ๋๋ค :) ์ ๊ฐ ์ฌ์ฉํ API๋ ๋์ด์ค์์ ์ ๊ณตํ๋ ๊ณต๊ณต API์ด๋ฉฐ ๋์ด์ค ๊ต์ก์ ๋ณด ๊ฐ๋ฐฉํฌํธ์์ API ํค๋ฅผ ๋ฐ๊ธ ๋ฐ์ ๋๊ตฌ๋ ์์ฝ๊ฒ ์ฌ์ฉ ๊ฐ๋ฅํฉ๋๋ค.
ํ๊ต ์ฝ๋ ๋ถ๋ฌ์ค๊ธฐ
$xmlfile = 'https://open.neis.go.kr/hub/schoolInfo?ATPT_OFCDC_SC_CODE=K10&SCHUL_NM='.$member['school'];
$sch_api_load = simplexml_load_file($xmlfile) or die("๊ธ์ ์ ๋ณด๋ฅผ ๋ถ๋ฌ์ค์ง ๋ชปํ์ต๋๋ค!");
$serial = 1;
foreach ($sch_api_load as $sch_api):
$sch_code = $sch_api->SD_SCHUL_CODE;
$serial++;
endforeach;
๊ธ์๊ณผ ์๊ฐํ ์ ๋ณด๋ฅผ ๋ฐ์์ค๊ธฐ ์ ํ๊ต ์ฝ๋๋ถํฐ ๋ถ๋ฌ์ค๋ ๊ฒ์ด ๋จผ์ ์ด๊ฒ ์ฃ .
XML ๋ฐฉ์์ ์ฌ์ฉํด ๋์ด์ค ํ๊ต๊ธฐ๋ณธ์ ๋ณด API๋ฅผ ์ฌ์ฉํ์ต๋๋ค. $xmlfile ๋ณ์์ $member["school"] ๋ถ๋ถ์ DB์์ ์ฌ์ฉ์ ๊ณ์ ์ ์ ์ฅ๋ school ๊ฐ์ ๋ถ๋ฌ์ค๋ ๋ถ๋ถ์ผ๋ก, ์๋๋ ํ๊ต ์ด๋ฆ์ด ๋ค์ด๊ฐ๋ ๋ถ๋ถ์ ๋๋ค.
๋ํ URL ์ค ATPT_OFCDC_SC_CODE ๋ถ๋ถ ๊ฐ์ด K10์ธ๋ฐ์. ์ด ๋ถ๋ถ์ ๋๊ต์ก์ฒญ ์ฝ๋๊ฐ ๋ค์ด๊ฐ์ผํ๋ ๋ถ๋ถ์ด๋ฉฐ, ๊ฐ์๋๊ต์ก์ฒญ ์ฝ๋๊ฐ K10์ด๋ฏ๋ก K10์ ๋ฃ์์ต๋๋ค.
๊ธ์ ๋ถ๋ฌ์ค๊ธฐ
$date = $resultDate;
$xmlfile = 'https://open.neis.go.kr/hub/mealServiceDietInfo?ATPT_OFCDC_SC_CODE=K10&SD_SCHUL_CODE='.$sch_code.'&MLSV_YMD='.$date.'&KEY=๋น๋ฐ';
$food_api = simplexml_load_file($xmlfile) or die("๊ธ์ ์ ๋ณด๋ฅผ ๋ถ๋ฌ์ค์ง ๋ชปํ์ต๋๋ค!");
$serial = 1;
$found = false;
foreach ($food_api as $food):
$date_api = $food->MLSV_YMD;
$menu = $food->DDISH_NM;
$cal = $food->CAL_INFO;
if($date == $date_api) {
echo $menu;
$found = true;
echo '<div style="margin-top: 10px;font-size:12px;color:gray;">'.$cal.'</div>';
}
$serial++;
endforeach;
if (!$found) {
echo "๊ธ์์ด ์๋ ๋ ์
๋๋ค.";
}
๋์ด์ค ๊ธ์์๋จ์ ๋ณด API๋ฅผ ์ฌ์ฉํ์ฌ ๊ธ์ ์๋จ์ ๋ถ๋ฌ์ค๊ฒ ํด๋์์ต๋๋ค. $date ๋ณ์์ ์ํ๋ ๋ ์ง๋ฅผ ๋ฃ๊ณ , $sch_code ๋ณ์์ ํ๊ต ์ฝ๋๋ฅผ ๋ฃ์ด ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฉ๋ด์ ์นผ๋ก๋ฆฌ๋ฅผ ๊ฐ์ด ๋ถ๋ฌ์ค๋๋ฐ์, API ์์์ ๋ ๋ง์ ์ ๋ณด๊ฐ ์์ง๋ง ๋ฑ ํ์ํ ์ ๋ณด๋ค(๋ฉ๋ด, ์นผ๋ก๋ฆฌ)๋ง ๊ณจ๋ผ์ ๊ฐ์ ธ์์ต๋๋ค.
๋ถํ์ํ ๊ธ์๋ค ๋ชจ๋ ์ ๊ฑฐํ๊ธฐ
$menu_out = preg_replace("/[^๊ฐ-ํฃa-zA-Z\s<>]/", "", $menu);
๊ธฐ๋ณธ์ ์ผ๋ก ๋ฉ๋ด ์ด๋ฆ์ ์ก๋คํ ์ซ์ ๊ฐ์ ๊ฒ๋ค์ด ๋ง์ด ๋ค์ด๊ฐ๋๋ฐ์, ๊ทธ๋์ ๋ถํ์ํ๊ฒ ๋ฉ๋ด๋ช ์ด ๊ธธ์ด์ง๋ ๊ฒ์ ๋ฐฉ์งํ๊ณ ์ ํ์ดํธ๋ฆฌ์คํธ๋ก ํ๊ธ(๊ฐ-ํฃ), ์์ด(a-zA-z), ์ค๋ฐ๊ฟ(<br>)์ ์ํ <> ๊ธฐํธ๋ฅผ ์ ์ธํ๊ณ ๋ชจ๋ ํ์ํ์ง ์๊ฒ ํด๋์์ต๋๋ค.
$menu_out = str_replace("๋ช
", "", $menu_out);
๋ค๋ง ์ ํฌ ํ๊ต ๊ธ์ ๋ฉ๋ด ์ด๋ฆ์ ๋ถํ์ํ๊ฒ ์๊พธ ๋ช ์ด๋ผ๋ ๊ธ์๊ฐ ๋ค์ด๊ฐ๋๋ผ๊ตฌ์. ๊ทธ๋์ ๋ช ์ด๋ผ๋ ๊ธ์๋ ๊ฐ์ด ์ ๊ฑฐ๋๋๋ก ํด๋์์ต๋๋ค.
์๊ฐํ ๋ถ๋ฌ์ค๊ธฐ
<?php
foreach ($sch_api_load as $sch_api):
$sch_code = $sch_api->SD_SCHUL_CODE;
endforeach;
$date = $resultDate;
$xmlfile = 'https://open.neis.go.kr/hub/hisTimetable?ATPT_OFCDC_SC_CODE=K10&SD_SCHUL_CODE='.$sch_code.'&GRADE='.$grade.'&CLASS_NM='.$room.'&ALL_TI_YMD='.$date.'&KEY=๋น๋ฐ';
$schedule_api = simplexml_load_file($xmlfile) or die("์๊ฐํ๋ฅผ ๋ถ๋ฌ์ค์ง ๋ชปํ์ต๋๋ค");
$serial = 1;
$found = false;
$judge = $schedule_api -> MESSAGE;
if(!$judge) {
$ymd = date('m์d์ผ');
echo '
<div id="schedule">';
foreach ($schedule_api as $schedule):
$date_api = $schedule->ALL_TI_YMD;
$period = $schedule->PERIO;
$subject = $schedule->ITRT_CNTNT;
if($date == $date_api) {
echo '
<div class="d_flex sche">
<div class="period">'.$period.'๊ต์</div>
<div class="subject">'.$subject.'</div>
</div>
';
$found = true;
}
$serial++;
endforeach;
echo "</div>";
}
else if (!$jubge) {
echo '<br>
<center>๋ถ๋ฌ์จ ์๊ฐํ๊ฐ ์์ด์.</center>
';
}
?>
์ฌ์ค ์๊ฐํ๋ฅผ ๋ถ๋ฌ์ค๋ ๊ณผ์ ๋ ๊ธ์ ๋ถ๋ฌ์ค๋ ๊ณผ์ ๊ณผ ํฌ๊ฒ ๋ค๋ฅด์ง ์์ต๋๋ค. ๊ทธ๋ฅ ๋ถ๋ฌ์ค๋ ๋งํฌ๋ฅผ ๋์ด์ค ๊ณ ๋ฑํ๊ต ์๊ฐํ API๋ก ๋ฐ๊พธ๋ฉด ๋๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ฐธ, ์ฝ์ฃ ?
์ฌ์ค ์ด ๋ฐฉ์์ ๋ง์ ์ ์ฉํ๊ณ ํ๋ฒ์ 5๊ฐ๋ฅผ ํ์ํ๋ ค ํ๋๊น ์๋๊ฐ 2~3์ด ๊ฐ๋ ๊ฑธ๋ ธ์ต๋๋ค. ์๋๋ฅผ ๊ฐ์ ํ๋ ค๊ณ XML ์บ์ ๊ฐ์ ๊ฒ๋ ์ฌ์ฉํด๋ดค๋๋ฐ ์ฌ์ ํ ๋๋ฆฌ๋๋ผ๊ตฌ์. ๊ณ ๋ฏผํ๋ค๊ฐ ๋ก๋ฉํ์ด์ง๋ฅผ ๋ฃ์๋๋ฐ ์๋๊ฑฐ ๊ฐ์์ ๋นผ๊ณ , ์์ผ์ ์ ํํ๊ฒ ํด์ 1๊ฐ์ฉ ํ์ํ๋ ๋ฐฉ๋ฒ์ผ๋ก ๋ฐ๊ฟจ์ต๋๋ค. ๊ทธ๋๋ 1๊ฐ ํ์ํ๋๊ฑด ๊ทธ๋ ๊ฒ ๋๋ฆฌ์ง ์๋๋ผ๊ตฌ์ ๐