문자열 치환 질문 입니다。

문자열 치환 질문 입니다。

QA

문자열 치환 질문 입니다。

본문

@@는 제목
#$ 문딘 시작
$# 문단 종료
^^색깔 강조 -보라색

 

php 로 어떻게 치환해야 하는건가요¿

 

$text = str_replace("@", "<p class='s-tit'>", $text); 게 하니까 @ 。。 @ 로 감싸고 있어서

맨 앞 맨 뒤를 어떻게 <p class='s-tit'> 。。 </p> 로 치환해야 하는지요

 

 

@ 내 아이의 활동성 기질 특성 @
6-10 중에 1~ 2개를 체크하셨다면 지금 아이는 기질 성향 중 활동이 많은 아이로 보여집니다.
6-10 중에 3개~5개를 체크하셨다면 지금 아이는 기질 성향 중 활동이 매우 많은 아이로 보여집니다.

@기질 정의@
 

아이를 키우실 때 부모님들이 정말 답답해하고 답을 찾을 수 없어 힘들어하시는 부분이 바로 기질과 관련된 부분입니다. 기질은 이성적인 판단과 논리적인 생각으로 만들어지는 것이 아니라 아이가 타고난 생물학적 특성입니다. 특히 오감이 너무 예민하게 발달 된 경우, 외부에서 새로운 자극이 들어올 때 이것을 무시하지 못하다 보니 순한 아이들에 비해 자극을 크게 받아들입니다.

이 질문에 댓글 쓰기 :

답변 2

다음 코드가 도움이 될지 모르겠습니다.


<?php
function parse_test($str, $opts) {
    $replaced = preg_replace_callback('/(?:@|\^\^|#\$)(.*?)(?:@|\^\^|\$#)/', function ($matches) use ($opts) {
        $tmp = '';
 
        if (substr($matches[0], 0, 2) == '^^') {
            $tmp = str_replace('::REPLACEMENT::', $matches[1], $opts['emphasis']);
        } else if (substr($matches[0], 0, 2) == '#$') {
            $tmp = str_replace('::REPLACEMENT::', $matches[1], $opts['sentence']);
        } else if (substr($matches[0], 0, 1) == '@') {
            $tmp = str_replace('::REPLACEMENT::', $matches[1], $opts['title']);
        }
 
        return $tmp;
    }, $str);
 
    return $replaced;
}
?>
 
<style>
.s-tit {
    font-size: 2em;
    font-weight: bold;
}
.s-cont {
    border: 0.1em dotted gray;
}
.emphasis {
    color: purple;
    font-weight: bold;
}
</style>
 
<?php
$str1 = <<<HEREDOC
@ 내 아이의 활동성 기질 특성 @
6-10 중에 1~ 2개를 체크하셨다면 지금 아이는 기질 성향 중 활동이 많은 아이로 보여집니다.
6-10 중에 3개~5개를 체크하셨다면 지금 아이는 기질 성향 중 활동이 매우 많은 아이로 보여집니다.
 
@기질 정의@
 
아이를 키우실 때 부모님들이 정말 답답해하고 답을 찾을 수 없어 힘들어하시는 부분이 바로 기질과 관련된 부분입니다. 기질은 이성적인 판단과 논리적인 생각으로 만들어지는 것이 아니라 아이가 타고난 ^^생물^^학적 특성입니다. #\$특히 오감이 너무 예민하게 발달 된 경우,\$# 외부에서 새로운 자극이 들어올 때 이것을 무시하지 못하다 보니 ^^순한^^ 아이들에 비해 자극을 크게 받아들입니다.
HEREDOC;
 
$parse_test_opts = [
    'title' => '<p class="s-tit">::REPLACEMENT::</p>', 
    'sentence' => '<p class="s-cont">::REPLACEMENT::</p>', 
    'emphasis' => '<span class="emphasis">::REPLACEMENT::</span>'
];
 
echo parse_test($str1, $parse_test_opts);
?>

정규식으로 explode 로 자르고 그걸 배열로 추출한 뒤에 array_unique()로 순서

$xx = "@"; 경우

$cut_xx = explode("@", $xx); 를 하게 되면 결과는

Array ( [0] => [1] => 1234 [2] => ) 로 나오게 됩니다.

이걸 치환하면 되지 않을까요?

답변을 작성하시기 전에 로그인 해주세요.
전체 123,963
QA 내용 검색

회원로그인

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