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

문자열 치환 질문 입니다。 채택완료

웹프리죤 1년 전 조회 938

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

 

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

 

$text = str_replace("@", "

", $text); 게 하니까 @ 。。 @ 로 감싸고 있어서

맨 앞 맨 뒤를 어떻게

。。 </p> 로 치환해야 하는지요

 

 

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

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

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

답변 2개

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

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

</p>

<p><?php

function parse_test($str, $opts) {

    $replaced = preg_replace_callback('/(?:@|\^\^|#\$)(.*?)(?:@|\^\^|\$#)/', function ($matches) use ($opts) {

        $tmp = '';</p>

<p> </p>

<p>        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']);

        }</p>

<p> </p>

<p>        return $tmp;

    }, $str);</p>

<p> </p>

<p>    return $replaced;

}

?></p>

<p> </p>

<p><style>

.s-tit {

    font-size: 2em;

    font-weight: bold;

}

.s-cont {

    border: 0.1em dotted gray;

}

.emphasis {

    color: purple;

    font-weight: bold;

}

</style></p>

<p> </p>

<p><?php</p>

<p>$str1 = <<<HEREDOC

@ 내 아이의 활동성 기질 특성 @

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

6-10 중에 3개~5개를 체크하셨다면 지금 아이는 기질 성향 중 활동이 매우 많은 아이로 보여집니다.</p>

<p> </p>

<p>@기질 정의@

 </p>

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

HEREDOC;</p>

<p> </p>

<p>$parse_test_opts = [

    'title' => '<p class="s-tit">::REPLACEMENT::</p>', 

    'sentence' => '<p class="s-cont">::REPLACEMENT::</p>', 

    'emphasis' => '<span class="emphasis">::REPLACEMENT::</span>'

];</p>

<p> </p>

<p>echo parse_test($str1, $parse_test_opts);

?></p>

<p>

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

답변에 대한 댓글 1개

웹프리죤
1년 전
답변 너무 감사한데.. 먼가 잘 안되서요..

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

toqurk
1년 전

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

$xx = "@123213123123@"; 경우

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

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

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

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

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

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

로그인