문자열 치환 질문 입니다。
본문
@@는 제목
#$ 문딘 시작
$# 문단 종료
^^색깔 강조 -보라색
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 = "@123213123123@"; 경우
$cut_xx = explode("@", $xx); 를 하게 되면 결과는
Array ( [0] => [1] => 1234 [2] => ) 로 나오게 됩니다.
이걸 치환하면 되지 않을까요?
                답변을 작성하시기 전에 로그인 해주세요.
            
    
 
  
 