문자열 치환 질문 입니다。
본문
@@는 제목
#$ 문딘 시작
$# 문단 종료
^^색깔 강조 -보라색
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] => ) 로 나오게 됩니다.
이걸 치환하면 되지 않을까요?
답변을 작성하시기 전에 로그인 해주세요.