내용에서 첫번째 문자를 치환하는 방법이 궁금합니다.

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
내용에서 첫번째 문자를 치환하는 방법이 궁금합니다.

QA

내용에서 첫번째 문자를 치환하는 방법이 궁금합니다.

본문

안녕하세요.
혼자 풀기 어려운 문제라 도움 부탁드립니다.

 


스무고개@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>

 

----------

관심 가져주셔서 감사합니다.
51,000+ 에서 +가 천단위숫자 "이상" 이라서 그 안네 있는 것이고 $가 각각의 구별자였습니다. :)
말씀해주신 스크립트는 모든 숫자에 볼드가 들어가게 되지 않나요?
전 처음 숫자에만 볼드가 필요해서요.


$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. 처음 것만 문자열 교체를하는 것이 효률적입니다.

$s="$wr_content = "스무고개@51,000+$|고향연화@50,000+$|미포집해운대본점@50,000+$|기장손칼국수@49,000+$|타이가텐푸라@48,000+$|칸다소바부전 ... ";
list( $s1, $s2)= explode( '@', $s, 2);
list( $s2a, $s2b)= explode( '+', $s2, 2);
echo $s1, '@<font-style:bold>',$s2a,'+</font>',$s2b;

답변을 작성하시기 전에 로그인 해주세요.
전체 49
QA 내용 검색
filter #php ×

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT