정규식 치환 질문드립니다.

정규식 치환 질문드립니다.

QA

정규식 치환 질문드립니다.

본문

정규식은 너무 어렵네요.

preg_replace를 이용하여 치환하는 문제와 특정 단어 뒤를 뽑아오는 문제에서 막히고 있습니다.

 

[code-html] [code-css] [code-js] 같은 내용이 있다면

 

1. code- 뒤에 오는 단어(위에서는 html,css,js)를 뽑아오고 싶습니다.

2. [code-***] 부분을 치환하고 싶습니다. ***값이 상황에 따라 달라지기 때문에 preg_replace로 정규식 치환을 해야 할 것 같은데 정규식 이해력이 낮아 해결이 안되고 있습니다.

 

고수님들의 도움 부탁드립니다.

이 질문에 댓글 쓰기 :

답변 3

심심해서 풀어봤습니다.

https://paiza.io/projects/e/Kdw3C1q39Xo5tpbxtz4S_Q?theme=twilight

 



function replace_string($matches) {
    //여기에 바꿀 문자를 넣습니다.   
    print_r($matches);
    
    if($matches[1] == "html") {
        return "[code-new_html]";
    } else if($matches[1] == "css") {
        return "[code-new_css]";
    } else if($matches[1] == "js") {
        return "[code-new_js]";
    } else {
        return $matches[0];
    }
    return "1";
    //return $matches[1].($matches[2]."new");
    
}
$string = "[code-html] [code-css] [code-js] ";
preg_match_all("/\[code-([a-zA-Z0-9]+)\]/", $string, $matches);
print_r($matches);

$new_string = preg_replace_callback("/\[code-([a-zA-Z0-9]+)\]/", 'replace_string', $string);
echo "old_string : $string <br>\n";
echo "new_string : $new_string <br>\n";

code-*** 에서 ***를 if문이 아니라 어떤 값이든 자동으로 변환되게 하려는게 목적이었는데
목적과는 다르지만 솔그루님의 답변이 큰 도움이 되었습니다. ^^
원래 의도는
[code-html] 를 <code class="html">로
[code-css] 를 <code class="css">로
...
[code-***] 를 <code class="***">로 바꾸는 것이었습니다 ^^

논리적으로 이해하기 쉬우라고 if else 를 써둔거에요^^

동일한 패턴으로 replace 하신다면, 한줄로 써도 되고, 배열값으로 replace 하셔도 됩니다.

도움 되셨다니, 기쁘네요.

배열값으로 replace는 이해를 한 것 같은데 동일한 패턴으로 replace한다는 말은 제 수준에 이해가 안되네요. 정규식 무식자라서 죄송합니다 ^^
혹시 이렇게 하는게 적용이 된다는 말씀이신가요?
preg_replace("/\[code-([a-zA-Z0-9]+)\]/", "<pre><code class=\"([a-zA-Z0-9]+)\]\">", $content);

replace_string 함수를 아래와 같이 바꾸시면 됩니다.

function replace_string($matches) {
    return "<code class=\"".$matches[1]."\">";
}

로 바꾸시면 됩니다.

 

preg_replace는 좀더 어렵게 코드를 만들어야 해서 예제로 사용하지 않았습니다.

 

 

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

회원로그인

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