테스트 사이트 - 개발 중인 베타 버전입니다

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

무와보 2년 전 조회 5,790

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

 

</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개

채택된 답변
+20 포인트
2년 전

</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년 전
답변 감사합니다.
제가 볼드 스타일 주는 것을 잘못 표현해서 괜히 혼자 더 고새했네요.
제가 원하는 아웃이 제대로 실현되어 기쁩니다.
감사합니다~

댓글을 작성하려면 로그인이 필요합니다.

 

1. 별도 테이블 사용을 추천합니다.

2. 처음 것만 문자열 교체를하는 것이 효률적입니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

무와보
2년 전
wr_content 안에서 어떻게든 해결을 봐야해서요.
신경써 주셔서 감사합니다~
엑스엠엘
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;

댓글을 작성하려면 로그인이 필요합니다.

2년 전

베르만님의 답변이 멋진 답변입니다

액트온님의 답변이 질문을 잘못 이해하신 것 같아 조금 수정 했습니다

이런 방법도 있다는 것을 참고로 보세요

----------------------------

 $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개

무와보
2년 전
균이님 오랜만에 뵙습니다.
신경써 주셔서 감사합니다.
먼저 채택된 답변이 있어 죄송합니다.

댓글을 작성하려면 로그인이 필요합니다.

A
2년 전

</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개

무와보
2년 전
답변 감사합니다.
먼저 채택된 답변이 있어 죄송하네요 ^^

댓글을 작성하려면 로그인이 필요합니다.

먼저 확인하고 싶은 것은

 

51,000+ 은

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개

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

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인