그누보드5 아이콘 버그입니다. 물론 버전이 안맞아서 생기는 문제이긴한데...

그누보드5 아이콘 버그입니다. 물론 버전이 안맞아서 생기는 문제이긴한데...

QA

그누보드5 아이콘 버그입니다. 물론 버전이 안맞아서 생기는 문제이긴한데...

답변 1

본문

1889370397_1597851596.7656.png

preg_replace를 실행한후에 널값으로 나옵니다. 정규식에 어떤 문제가 있는건지 알고싶습니다.

웹아이콘이나 이모티콘 다 널값으로 나와서 정규식을 타기전에 찍어보면 {아이콘: ...} 이나 {이모티콘: ...} 이렇게 입력된값이 그대로 나오더라구요.

그래서 이걸 고치고 싶은데 정규식 해석이 안되네요 

apms_icon 이라는게 어디에 있는건지... 저 앞에 /.../ie \값이후에 값만 가져와서 아이콘으로 변환하는 로직같은데 apms_icon에 문제가 있는걸로 생각이 됩니다.

 

해결방법이 있을까요?

 

 

이 질문에 댓글 쓰기 :

답변 1

NULL 값이 나오는 이유는 버그가 아니라, PHP v7.0부터 e 변경자가 제거되었기 때문입니다.

 

+ preg_replace()

- https://www.php.net/manual/en/function.preg-replace.php

 

+ Pattern Modifiers

https://www.php.net/manual/en/reference.pcre.pattern.modifiers.php

- http://docs.php.net/manual/kr/reference.pcre.pattern.modifiers.php

 

{아이콘:값}... 문자열에서 값 부분의 문자열을 찾아 apms_icon('값')으로 함수 실행하는 것입니다.

찾아보면 function apms_icon(...) { 함수가 있을거에요.

아래처럼 수정하면 됩니다.


function apms_icon($str) { // 변수명을 몰라서 임의로 지정해봤습니다.
    $str = $str[1]; // 변수가 얼마나 등장하는지 모르겠으나, 처음에 이렇게 한 줄 추가해주면
    // 이하 기존의 코드 그대로 사용할 수 있어 편할겁니다.
    // [기존코드]
    // :
}
// 질문의 코드에서 문제가 된 부분 수정. 불필요 변경자 제거. UTF-8 처리.
    $str = $str ? preg_replace_callback('/{아이콘\:([^}]*)}/u', 'apms_icon', $str) : $str;
// 또는 preg_replace() 함수 레퍼런스 첫 예제처럼 익명 함수 사용해도 됩니다.
    $str = $str ? preg_replace_callback('/{아이콘\:([^}]*)}/u',
        function($m) {
            /*
            기존 apms_icon() 함수 내용
            마찬가지로 기존 변수 대신 $m[1] 사용.
            위에 적었지만 처음에 $str = $m[1]; 처럼 할당해도 무방
            */
        },
        $str) : $str;
답변을 작성하시기 전에 로그인 해주세요.
전체 2
© SIRSOFT
현재 페이지 제일 처음으로