์ด๋ฒ ํฌ์คํ
์์ ์์ ๋งํ๋ ์ด๋ฏธ์ง๊ฐ ์ฌ๋ฌ๊ฐ ์์ ๊ธฐ์ค์ผ๋ก ์ฝ๋๋ฅผ ๊ตฌํ์ ํด๋ณด๋ ค๊ณ ํ๋ค. ๋ณ๊ฒฝ๋ jsonํ์ผ์ ์๋์ ๊ฐ๋ค.
{
"sample": [
{
"id": "1",
"image": "https://png.pngtree.com/thumb_back/fh260/background/20230609/pngtree-three-puppies-with-their-mouths-open-are-posing-for-a-photo-image_2902292.jpg",
"question": "๋ค์ ์ค ์ด์ค๋ <img src=1/> 1.5ํค ํผ๊ฒฌ์ธ ์น์ฉ์๋์ฐจ๋ฅผ 4.5ํค ํ๋ฌผ์๋์ฐจ๋ก ๊ฒฌ์ธํ๋ ๊ฒฝ์ฐ ํ์ํ ์ด์ ๋ฉดํ์ ํด๋นํ์ง ์์ ๊ฒ์?",
"options": [
"โ ์ 1์ข
๋ํ๋ฉดํ ๋ฐ ์ํ๊ฒฌ์ธ์ฐจ๋ฉดํ",
"โก ์ 1์ข
๋ณดํต๋ฉดํ ๋ฐ ๋ํ๊ฒฌ์ธ์ฐจ๋ฉดํ",
"โข ์ 1์ข
๋ณดํต๋ฉดํ ๋ฐ ์ํ๊ฒฌ์ธ์ฐจ๋ฉดํ",
"โฃ ์ 2์ข
๋ณดํต๋ฉดํ ๋ฐ ๋ํ๊ฒฌ์ธ์ฐจ๋ฉดํ"
],
"questionImageUrls": [],
"questionImageDescriptions": [
""
],
"answers": [
"4"
],
"explanation": "๋๋ก๊ตํต๋ฒ ์ํ๊ท์น ๋ณํ18 ์ด์ค๋ 750ํฌ๋ก๊ทธ๋จ์ ์ด๊ณผํ๋ 3ํค ์ดํ์ ํผ๊ฒฌ์ธ ์๋์ฐจ๋ฅผ ๊ฒฌ์ธํ๊ธฐ ์ํด์๋ ๊ฒฌ์ธํ๋ ์๋์ฐจ๋ฅผ ์ด์ ํ ์ ์๋ ๋ฉดํ์ ์ํ๊ฒฌ์ธ์ฐจ๋ฉดํ ๋๋ ๋ํ๊ฒฌ์ธ์ฐจ๋ฉดํ๋ฅผ ๊ฐ์ง๊ณ ์์ด์ผ ํ๋ค.",
"explanationImageUrls": [],
"explanationImageDescriptions": [],
"tags": [],
"type": "๊ฐ๊ด์"
},
{
"id": "2",
"image": "https://gongu.copyright.or.kr/gongu/wrt/cmmn/wrtFileImageView.do?wrtSn=9046601&filePath=L2Rpc2sxL25ld2RhdGEvMjAxNC8yMS9DTFM2L2FzYWRhbFBob3RvXzI0MTRfMjAxNDA0MTY=&thumbAt=Y&thumbSe=b_tbumb&wrtTy=10004",
"question": "๋๋ก๊ตํต๋ฒ๋ น์ ์ด์ ๋ฉดํ์ฆ <img src=2/> ๋ฐ๊ธ์ ๋ํ ์ค๋ช
์ผ๋ก ์ณ์ง ์์ ๊ฒ์?",
"options": [
"โ ์ด์ ๋ฉดํ์ํ ํฉ๊ฒฉ์ผ๋ก๋ถํฐ 30์ผ ์ด๋ด์ ์ด์ ๋ฉดํ์ฆ์ ๋ฐ๊ธ๋ฐ์์ผ ํ๋ค.",
"โก ์๋ฌธ์ด์ ๋ฉดํ์ฆ์ ๋ฐ๊ธ๋ฐ์ ์ ์๋ค.",
"โข ๋ชจ๋ฐ์ผ์ด์ ๋ฉดํ์ฆ์ ๋ฐ๊ธ๋ฐ์ ์ ์๋ค.",
"โฃ ์ด์ ๋ฉดํ์ฆ์ ์์ด๋ฒ๋ฆฐ ๊ฒฝ์ฐ์๋ ์ฌ๋ฐ๊ธ ๋ฐ์ ์ ์๋ค."
],
"questionImageUrls": [],
"questionImageDescriptions": [
""
],
"answers": [
"2"
],
"explanation": "๋๋ก๊ตํต๋ฒ์ํ๊ท์น ์ 77์กฐ∼์ 81์กฐ",
"explanationImageUrls": [],
"explanationImageDescriptions": [],
"tags": [],
"type": "๊ฐ๊ด์"
},
์ด์ ๊ณผ ๋ฌ๋ฆฌ ์ด๋ฏธ์ง๊ฐ 2๊ฐ ์ด์์ด๋ค. ์ด์ ์ด๋ฅผ ํ์ฑํ ์ ์๋ ์ฝ๋๋ฅผ ๊ตฌํํด ๋ณผ ๊ฒ์ด๋ค. ์ฒ์์๋ ์ ๊ท ํํ์์ ์ด๋ฏธ์ง์ ์ซ์๋ฅผ ํ๋ํ๋ ํ์ฑํ ์ ์๋๋ก ์์ฑํ๋ ค ํ์ผ๋ ๊ทธ๋ด ํ์ ์์ด <img/>๋ผ๋ ๋ถ๋ถ์ด ๋ค์ด๊ฐ ๋ชจ๋ ํํ์์ ํ์ฑํ๊ณ ๊ทธ๊ฒ๋ค์ ์ด๋ฏธ์ง ํ๊ทธ๋ก ์ ํํ๋ ๋ฐฉ์์ผ๋ก parseImageTagํจ์๋ฅผ ๋ณํํ๋ฉด ๋๋ค. ์์ ๋์ด์ผ ํ parseImageTag๋ ์๋์ ๊ฐ๋ค.
//HTML ๋ฌธ์์ด์ ํฌํจ๋ <img> ํ๊ทธ๋ฅผ ์ค์ ์ด๋ฏธ์ง๋ก ๋ณ๊ฒฝํ๋ ํจ์
const parseImageTag = (question_img, question_img_url, question_img_class) => {
// ์ ๊ท์์ ์ฌ์ฉํ์ฌ <img src=1> ๋ฌธ์์ด์ ์ฐพ๋๋ค.
const imgRegex = /<img.*?\/?>/g;
// ๋์ฒดํ ์ด๋ฏธ์ง ํ๊ทธ๋ก ๊ต์ฒดํ๋ค.
return question_img.replace(imgRegex, `<img src="${question_img_url}" className="${question_img_class}" />`);
};
๊ฒฐ๊ณผ์ ์ผ๋ก ๋๋ฌด ๋ณต์กํ๊ฒ ์๊ฐ์ ํ๋ค. ๋ค์์ ๊ตฌํ ํด๋ณผ ๊ฒ์ ํ ๋ฌธ์ ์ ์ด๋ฏธ์ง๊ฐ 2๊ฐ ์ด์์ด ์์ ๊ฒฝ์ฐ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ ์ง์ dangerouslySetInnerHTML์ ๋์ฒดํ ์ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฐพ์์ ๋์ฒดํด์ ๊ตฌํํด ๋ณผ ๊ฒ์ด๋ค.