정규표현식 e 수정자 (= e modifier) 대체하는 코드 형식으로 변경하려면? 채택완료
</p>
<p>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";</p>
<p> foreach ($pt as $p) {
if (preg_match($p, $content)) {
return $p;
}
}</p>
<p> return false;
}</p>
<p>function mw_vimeo_pattern($content)
{
$pt = array();
$pt[] = "/\[(https?:\/\/vimeo\.com\/[^]]+)\]/ie";
$pt[] = "/\[<a href=\"(https?:\/\/vimeo\.com\/[^\"]+)\"[^>]+>[^<]+<\/a>\]/ie"; </p>
<p> foreach ($pt as $p) {
if (preg_match($p, $content)) {
return $p;
}
}</p>
<p> return false;
}</p>
<p>
위 함수 배열값에 e 수정자가 있다보니,
$view['rich_content'] 본문 변수가 위 함수를 거칠 경우 본문 내용 일부가 출력이 안 되는데,
이 부분은 어떤 식으로 수정해줘야 할까요?
[함수 통과 전 $view['rich_content'] 상태]
[https://youtu.be/2s8DkMqsEF0" rel="nofollow" target="_blank">https://youtu.be/2s8DkMqsEF0] <--- 함수 통과 시 이 부분이 사라짐.
[https://vimeo.com/12280336" rel="nofollow" target="_blank">https://vimeo.com/12280336] <--- 함수 통과 시 이 부분이 사라짐.
[e:em1]
★
[함수 통과 후 $view['rich_content'] 상태]
[e:em1]
★
이 함수는 아래 슈와이 님이 preg_replace 형식을 preg_replace_callback 형식으로 수정해주신 함수 안으로 들어와 사용됩니다.
※ 참고
e를 제거하면 에러 출력이 사라지는데,
$view['rich_content'] 변수가 유투브 관련 내용을 출력 안 함.
</p>
<p>/* PHP 7210 시작 - 슈와이 님 */
function conv_mw_youtube($matches) {
global $q;
mw_youtube($matches[1], $q);
}</p>
<p>function conv_mw_vimeo($matches) {
global $q;
mw_vimeo($matches[1], $q);
}</p>
<p>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 종료 - 슈와이 님 */</p>
<p>
답변 1개
mw_youtube($matches[1], $q);
=>
return mw_youtube($matches[1], $q);
mw_vimeo($matches[1], $q);
=>
return mw_vimeo($matches[1], $q);
답변에 대한 댓글 2개
감사합니다. 슈와이 님. ( ^ _________ ^ ) ===b
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
한번 적용 해보고 사용후기 남길게요.