내용에서 첫번째 문자를 치환하는 방법이 궁금합니다. 채택완료
안녕하세요. 혼자 풀기 어려운 문제라 도움 부탁드립니다.
</p>
<p>스무고개@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+$</p>
<p>
wr_content가 이런 구조로 되어 있습니다.
원하는 결과는 "1000+"단위의 첫번째 문자열마다 font-style을 bold로 주고 싶습니다.
</p>
<p>스무고개@<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+$</p>
<p>
즉 첫번째 51,000+일 때는 bold로 그 뒤는 변하지 않고
다음 50,000+일 때는 bold로 또 그뒤는 변하지 않고
이런 식으로 천 단위마다 스타일에 bold를 넣고 싶습니다.
구글링을 해보니 str_replace() 또는 substr_replace() 를 이용하는 방법이 있는데 처음 한번만 적용되고 나머지는 for문을 사용하지 않고서는 방법이 없더군요.
제 한계가 여기까지라 그누 회원님의 도움을 얻고자 합니다.
고수분들의 많은 의견 부탁드립니다.
답변 5개
</p>
<p><?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;</p>
<p> </p>
<p>$chks = [];
$content = preg_replace_callback('/@[\d,]+\+\$/', function ($arg) use (&$chks) {
$val = $arg[0];</p>
<p> </p>
<p> if (isset($chks[$val]) == false) {
$chks[$val] = true;
$val = str_replace(['@', '$'], ['@<font-style:bold>', '</style>$'], $val);
}
return $val;
}, $wr_content);</p>
<p> </p>
<p>echo $content;</p>
<p>
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
답변에 대한 댓글 2개
신경써 주셔서 감사합니다~
list( $s1, $s2)= explode( '@', $s, 2);
list( $s2a, $s2b)= explode( '+', $s2, 2);
echo $s1, '@<font-style:bold>',$s2a,'+</font>',$s2b;
댓글을 작성하려면 로그인이 필요합니다.
베르만님의 답변이 멋진 답변입니다
액트온님의 답변이 질문을 잘못 이해하신 것 같아 조금 수정 했습니다
이런 방법도 있다는 것을 참고로 보세요
----------------------------
$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] = "{$subparts[1]}+"; } else $subparts[1] = $subparts[1].'+'; $result .= implode("@", $subparts); } $result.="$";
echo $result;
답변에 대한 댓글 1개
신경써 주셔서 감사합니다.
먼저 채택된 답변이 있어 죄송합니다.
댓글을 작성하려면 로그인이 필요합니다.
</p>
<p>$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+$";</p>
<p>$parts = explode("+", $wr_content);
$result = "";</p>
<p>foreach ($parts as $part) {
$subparts = explode("@", $part);
$subparts[0] = "<font style='font-weight:bold;'>{$subparts[0]}</font>";
$result .= implode("@", $subparts) . "+";
}</p>
<p>$result = rtrim($result, "+");</p>
<p>echo $result;</p>
<p>
답변에 대한 댓글 1개
먼저 채택된 답변이 있어 죄송하네요 ^^
댓글을 작성하려면 로그인이 필요합니다.
먼저 확인하고 싶은 것은
51,000+ 로 표현되어야 맞지 않을까요?
이게 맞다고 하시면 그에 맞춰서...
----------
</p>
<p><?php</p>
<p>$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+$";</p>
<p>?></p>
<p> </p>
<p><div id="bo_v_con"></p>
<p> <?php echo $wr_content; ?>
</div></p>
<p>.</p>
<p>.</p>
<p>.</p>
<p><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></p>
<p>
----------
답변에 대한 댓글 1개
51,000+ 에서 +가 천단위숫자 "이상" 이라서 그 안네 있는 것이고 $가 각각의 구별자였습니다. :)
말씀해주신 스크립트는 모든 숫자에 볼드가 들어가게 되지 않나요?
전 처음 숫자에만 볼드가 필요해서요.
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
제가 볼드 스타일 주는 것을 잘못 표현해서 괜히 혼자 더 고새했네요.
제가 원하는 아웃이 제대로 실현되어 기쁩니다.
감사합니다~