정규표현식 e 수정자 (= e modifier) 대체하는 코드 형식으로 변경하려면?

정규표현식 e 수정자 (= e modifier) 대체하는 코드 형식으로 변경하려면?

QA

정규표현식 e 수정자 (= e modifier) 대체하는 코드 형식으로 변경하려면?

답변 1

본문


function mw_youtube_pattern($content)
{
    $content = stripslashes($content);
    $pt = array();
    $pt[] = "/\[<a href=\"(https?:\/\/youtu\.be\/[^\"]+)\"[^>]*>[^<]+<\/a>\]/ie";
    $pt[] = "/\[<a href=\"(https?:\/\/www\.youtube\.com\/[^\"]+)\"[^>]*>[^<]+<\/a>\]/ie";
    $pt[] = "/\[(https?:\/\/youtu\.be\/[^\]]+)\]/ie";
    $pt[] = "/\[(https?:\/\/www\.youtube\.com\/[^\]]+)\]/ie";
    foreach ($pt as $p) {
        if (preg_match($p, $content)) {
            return $p;
        }
    }
    return false;
}
function mw_vimeo_pattern($content)
{
    $pt = array();
    $pt[] = "/\[(https?:\/\/vimeo\.com\/[^]]+)\]/ie"; 
    $pt[] = "/\[<a href=\"(https?:\/\/vimeo\.com\/[^\"]+)\"[^>]+>[^<]+<\/a>\]/ie"; 
    foreach ($pt as $p) {
        if (preg_match($p, $content)) {
            return $p;
        }
    }
    return false;
}

 

위 함수 배열값에 e 수정자가 있다보니,
$view['rich_content'] 본문 변수가 위 함수를 거칠 경우 본문 내용 일부가 출력이 안 되는데,

이 부분은 어떤 식으로 수정해줘야 할까요? 

 

[함수 통과 전 $view['rich_content']  상태]

[https://youtu.be/2s8DkMqsEF0]  <--- 함수 통과 시 이 부분이 사라짐.
[https://vimeo.com/12280336]  <--- 함수 통과 시 이 부분이 사라짐.
[e:em1] 
★ 

 

[함수 통과 후 $view['rich_content'] 상태]
[e:em1] 

 

 

이 함수는 아래 슈와이 님이 preg_replace 형식을 preg_replace_callback 형식으로 수정해주신 함수 안으로 들어와 사용됩니다.

 

※ 참고

e를 제거하면 에러 출력이 사라지는데, 

$view['rich_content'] 변수가 유투브 관련 내용을 출력  안 함.

 


/* PHP 7210 시작 - 슈와이 님 */
function conv_mw_youtube($matches) {
    global $q;
    mw_youtube($matches[1], $q);
}
function conv_mw_vimeo($matches) {
    global $q;
    mw_vimeo($matches[1], $q);
}
function mw_youtube_content($content, $q='')
{
    $pt = mw_youtube_pattern($content);
    if ($pt) 
        $content = preg_replace_callback($pt, 'conv_mw_youtube', $content);    // 에러 발생 라인
    $pt = mw_vimeo_pattern($content);  
    if ($pt)
        $content = preg_replace_callback($pt, 'conv_mw_vimeo', $content);   // 에러 발생 라인
    return mw_video_wrapper($content);
}
/* PHP 7210 종료 - 슈와이 님 */

 

이 질문에 댓글 쓰기 :

답변 1

mw_youtube($matches[1], $q);

=>

return mw_youtube($matches[1], $q);

 

mw_vimeo($matches[1], $q);

=>

return mw_vimeo($matches[1], $q);

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 42
© SIRSOFT
현재 페이지 제일 처음으로