내용에서 첫번째 문자를 치환하는 방법이 궁금합니다.
본문
안녕하세요.
혼자 풀기 어려운 문제라 도움 부탁드립니다.
스무고개@51,000+$|고향연화@50,000+$|미포집해운대본점@50,000+$|기장손칼국수@49,000+$|타이가텐푸라@48,000+$|칸다소바부전동점@47,000+$|영도해녀촌@47,000+$|쌍둥이돼지국밥본점@47,000+$|피아크카페&베이커리@45,000+$|에테르@45,000+$|선창횟집@45,000+$|비아조@45,000+$|해운대기와집대구탕@45,000+$|초힛사츠@44,000+$|합천국밥집@44,000+$|남천녹차팥빙수@44,000+$|로우앤스윗@43,000+$|어밤부@43,000+$|차선책본점@43,000+$|헤이든@43,000+$|네살차이@42,000+$|어느멋진날@42,000+$|버거샵@42,000+$|깡돼후@41,000+$|평산옥@40,000+$|나이브브류어스@40,000+$|해운대밀면@40,000+$|류센소본점@40,000+$|이재모피자서면점@39,000+$|거대갈비@39,000+$|다이도코로@39,000+$|카페인차저@39,000+$|자매국밥@39,000+$|대정양곱창@39,000+$|의령식당@37,000+$|수민이네@37,000+$|라이프커피앤티@37,000+$|송정3대국밥@36,000+$|거대곰탕@36,000+$|갈삼구이@36,000+$|백설대학@36,000+$|양가네양곱창@36,000+$|첨벙@36,000+$|바다마루전복죽@36,000+$|듀플릿해리단길@36,000+$|탐복@36,000+$|마가만두@36,000+$|밀양순대돼지국밥부산본점@35,000+$|상생라멘광안리점@35,000+$|개미집국제시장본점@35,000+$|오후의홍차@35,000+$|순진한칼국수@35,000+$
wr_content가 이런 구조로 되어 있습니다.
원하는 결과는 "1000+"단위의 첫번째 문자열마다 font-style을 bold로 주고 싶습니다.
스무고개@<font-style:bold>51,000+</style>$|고향연화@<font-style:bold>50,000+</style>$|미포집해운대본점@50,000+$|기장손칼국수@<font-style:bold>49,000+</style>$|타이가텐푸라@<font-style:bold>48,000+</style>$|칸다소바부전동점@<font-style:bold>47,000+</style>$|영도해녀촌@47,000+$|쌍둥이돼지국밥본점@47,000+$|피아크카페&베이커리@<font-style:bold>45,000+</style>$|에테르@45,000+$|선창횟집@45,000+$|비아조@45,000+$|해운대기와집대구탕@45,000+$|초힛사츠@<font-style:bold>44,000+</style>$|합천국밥집@44,000+$|남천녹차팥빙수@44,000+$|로우앤스윗@<font-style:bold>43,000+</style>$|어밤부@43,000+$|차선책본점@43,000+$|헤이든@43,000+$|네살차이@<font-style:bold>42,000+</style>$|어느멋진날@42,000+$|버거샵@42,000+$|깡돼후@<font-style:bold>41,000+</style>$|평산옥@<font-style:bold>40,000+</style>$|나이브브류어스@40,000+$|해운대밀면@40,000+$|류센소본점@40,000+$|이재모피자서면점@<font-style:bold>39,000+</style>$|거대갈비@39,000+$|다이도코로@39,000+$|카페인차저@39,000+$|자매국밥@39,000+$|대정양곱창@39,000+$|의령식당@<font-style:bold>37,000+</style>$|수민이네@37,000+$|라이프커피앤티@37,000+$|송정3대국밥@<font-style:bold>36,000+</style>$|거대곰탕@36,000+$|갈삼구이@36,000+$|백설대학@36,000+$|양가네양곱창@36,000+$|첨벙@36,000+$|바다마루전복죽@36,000+$|듀플릿해리단길@36,000+$|탐복@36,000+$|마가만두@36,000+$|밀양순대돼지국밥부산본점@<font-style:bold>35,000+</style>$|상생라멘광안리점@35,000+$|개미집국제시장본점@35,000+$|오후의홍차@35,000+$|순진한칼국수@35,000+$
즉 첫번째 51,000+일 때는 bold로 그 뒤는 변하지 않고
다음 50,000+일 때는 bold로 또 그뒤는 변하지 않고
이런 식으로 천 단위마다 스타일에 bold를 넣고 싶습니다.
구글링을 해보니 str_replace() 또는 substr_replace() 를 이용하는 방법이 있는데 처음 한번만 적용되고 나머지는 for문을 사용하지 않고서는 방법이 없더군요.
제 한계가 여기까지라 그누 회원님의 도움을 얻고자 합니다.
고수분들의 많은 의견 부탁드립니다.
답변 5
<?php
$wr_content = <<<HEREDOC
스무고개@51,000+$|고향연화@50,000+$|미포집해운대본점@50,000+$|기장손칼국수@49,000+$|타이가텐푸라@48,000+$|칸다소바부전동점@47,000+$|영도해녀촌@47,000+$|쌍둥이돼지국밥본점@47,000+$|피아크카페&베이커리@45,000+$|에테르@45,000+$|선창횟집@45,000+$|비아조@45,000+$|해운대기와집대구탕@45,000+$|초힛사츠@44,000+$|합천국밥집@44,000+$|남천녹차팥빙수@44,000+$|로우앤스윗@43,000+$|어밤부@43,000+$|차선책본점@43,000+$|헤이든@43,000+$|네살차이@42,000+$|어느멋진날@42,000+$|버거샵@42,000+$|깡돼후@41,000+$|평산옥@40,000+$|나이브브류어스@40,000+$|해운대밀면@40,000+$|류센소본점@40,000+$|이재모피자서면점@39,000+$|거대갈비@39,000+$|다이도코로@39,000+$|카페인차저@39,000+$|자매국밥@39,000+$|대정양곱창@39,000+$|의령식당@37,000+$|수민이네@37,000+$|라이프커피앤티@37,000+$|송정3대국밥@36,000+$|거대곰탕@36,000+$|갈삼구이@36,000+$|백설대학@36,000+$|양가네양곱창@36,000+$|첨벙@36,000+$|바다마루전복죽@36,000+$|듀플릿해리단길@36,000+$|탐복@36,000+$|마가만두@36,000+$|밀양순대돼지국밥부산본점@35,000+$|상생라멘광안리점@35,000+$|개미집국제시장본점@35,000+$|오후의홍차@35,000+$|순진한칼국수@35,000+$
HEREDOC;
$chks = [];
$content = preg_replace_callback('/@[\d,]+\+\$/', function ($arg) use (&$chks) {
$val = $arg[0];
if (isset($chks[$val]) == false) {
$chks[$val] = true;
$val = str_replace(['@', '$'], ['@<font-style:bold>', '</style>$'], $val);
}
return $val;
}, $wr_content);
echo $content;
먼저 확인하고 싶은 것은
<font-style:bold>51,000+</style> 은
<span style='font-weight:bold'>51,000</span>+ 로 표현되어야 맞지 않을까요?
이게 맞다고 하시면 그에 맞춰서...
----------
<?php
$wr_content = "스무고개@51,000+$|고향연화@50,000+$|미포집해운대본점@50,000+$|기장손칼국수@49,000+$|타이가텐푸라@48,000+$|칸다소바부전동점@47,000+$|영도해녀촌@47,000+$|쌍둥이돼지국밥본점@47,000+$|피아크카페&베이커리@45,000+$|에테르@45,000+$|선창횟집@45,000+$|비아조@45,000+$|해운대기와집대구탕@45,000+$|초힛사츠@44,000+$|합천국밥집@44,000+$|남천녹차팥빙수@44,000+$|로우앤스윗@43,000+$|어밤부@43,000+$|차선책본점@43,000+$|헤이든@43,000+$|네살차이@42,000+$|어느멋진날@42,000+$|버거샵@42,000+$|깡돼후@41,000+$|평산옥@40,000+$|나이브브류어스@40,000+$|해운대밀면@40,000+$|류센소본점@40,000+$|이재모피자서면점@39,000+$|거대갈비@39,000+$|다이도코로@39,000+$|카페인차저@39,000+$|자매국밥@39,000+$|대정양곱창@39,000+$|의령식당@37,000+$|수민이네@37,000+$|라이프커피앤티@37,000+$|송정3대국밥@36,000+$|거대곰탕@36,000+$|갈삼구이@36,000+$|백설대학@36,000+$|양가네양곱창@36,000+$|첨벙@36,000+$|바다마루전복죽@36,000+$|듀플릿해리단길@36,000+$|탐복@36,000+$|마가만두@36,000+$|밀양순대돼지국밥부산본점@35,000+$|상생라멘광안리점@35,000+$|개미집국제시장본점@35,000+$|오후의홍차@35,000+$|순진한칼국수@35,000+$";
?>
<div id="bo_v_con">
<?php echo $wr_content; ?>
</div>
.
.
.
<script>
const bo_v_con = document.querySelector("#bo_v_con");
bo_v_con.innerHTML = bo_v_con.innerHTML.replaceAll("@", "@<span style='font-weight:bold'>").replaceAll("+$", "</span>+$");
</script>
----------
!-->
$wr_content = "스무고개@51,000+$|고향연화@50,000+$|미포집해운대본점@50,000+$|기장손칼국수@49,000+$|타이가텐푸라@48,000+$|칸다소바부전동점@47,000+$|영도해녀촌@c47,000+$|쌍둥이돼지국밥본점@47,000+$|피아크카페&베이커리@45,000+$|에테르@45,000+$|선창횟집@45,000+$|비아조@45,000+$|해운대기와집대구탕@45,000+$|초힛사츠@44,000+$|합천국밥집@44,000+$|남천녹차팥빙수@44,000+$|로우앤스윗@43,000+$|어밤부@43,000+$|차선책본점@43,000+$|헤이든@43,000+$|네살차이@42,000+$|어느멋진날@42,000+$|버거샵@42,000+$|깡돼후@41,000+$|평산옥@40,000+$|나이브브류어스@40,000+$|해운대밀면@40,000+$|류센소본점@40,000+$|이재모피자서면점@39,000+$|거대갈비@39,000+$|다이도코로@39,000+$|카페인차저@39,000+$|자매국밥@39,000+$|대정양곱창@39,000+$|의령식당@37,000+$|수민이네@37,000+$|라이프커피앤티@37,000+$|송정3대국밥@36,000+$|거대곰탕@36,000+$|갈삼구이@36,000+$|백설대학@36,000+$|양가네양곱창@36,000+$|첨벙@36,000+$|바다마루전복죽@36,000+$|듀플릿해리단길@36,000+$|탐복@36,000+$|마가만두@36,000+$|밀양순대돼지국밥부산본점@35,000+$|상생라멘광안리점@35,000+$|개미집국제시장본점@35,000+$|오후의홍차@35,000+$|순진한칼국수@35,000+$";
$parts = explode("+", $wr_content);
$result = "";
foreach ($parts as $part) {
$subparts = explode("@", $part);
$subparts[0] = "<font style='font-weight:bold;'>{$subparts[0]}</font>";
$result .= implode("@", $subparts) . "+";
}
$result = rtrim($result, "+");
echo $result;
베르만님의 답변이 멋진 답변입니다
액트온님의 답변이 질문을 잘못 이해하신 것 같아 조금 수정 했습니다
이런 방법도 있다는 것을 참고로 보세요
----------------------------
$wr_content = "스무고개@51,000+$|고향연화@50,000+$|미포집해운대본점@50,000+$|기장손칼국수@49,000+$|타이가텐푸라@48,000+$|칸다소바부전동점@47,000+$|영도해녀촌@47,000+$|쌍둥이돼지국밥본점@47,000+$|피아크카페&베이커리@45,000+$|에테르@45,000+$|선창횟집@45,000+$|비아조@45,000+$|해운대기와집대구탕@45,000+$|초힛사츠@44,000+$|합천국밥집@44,000+$|남천녹차팥빙수@44,000+$|로우앤스윗@43,000+$|어밤부@43,000+$|차선책본점@43,000+$|헤이든@43,000+$|네살차이@42,000+$|어느멋진날@42,000+$|버거샵@42,000+$|깡돼후@41,000+$|평산옥@40,000+$|나이브브류어스@40,000+$|해운대밀면@40,000+$|류센소본점@40,000+$|이재모피자서면점@39,000+$|거대갈비@39,000+$|다이도코로@39,000+$|카페인차저@39,000+$|자매국밥@39,000+$|대정양곱창@39,000+$|의령식당@37,000+$|수민이네@37,000+$|라이프커피앤티@37,000+$|송정3대국밥@36,000+$|거대곰탕@36,000+$|갈삼구이@36,000+$|백설대학@36,000+$|양가네양곱창@36,000+$|첨벙@36,000+$|바다마루전복죽@36,000+$|듀플릿해리단길@36,000+$|탐복@36,000+$|마가만두@36,000+$|밀양순대돼지국밥부산본점@35,000+$|상생라멘광안리점@35,000+$|개미집국제시장본점@35,000+$|오후의홍차@35,000+$|순진한칼국수@35,000+$";
$parts = explode("+", $wr_content);
$result = ""; $tmp=[];
foreach ($parts as $part) {
$subparts = explode("@", $part);
if(!isset($subparts[1])) continue;
if(! in_array( $subparts[1], $tmp)){$tmp[]=$subparts[1]; $subparts[1] = "<b>{$subparts[1]}+</b>"; }
else $subparts[1] = $subparts[1].'+';
$result .= implode("@", $subparts);
}
$result.="$";
echo $result;
1. 별도 테이블 사용을 추천합니다.
2. 처음 것만 문자열 교체를하는 것이 효률적입니다.