정규표현식 preg_replace 함수 e 수정자를 preg_replace_callback 형식으로 바꾸려면? 채택완료
if (!$mw_basic['cf_zzal']) $view['rich_content'] = @preg_replace("/{이미지\:([0-9]+)[:]?([^}]*)}/ie", "mw_view_image(\$view, '\\1', '\\2')", $view['content']); else $view['rich_content'] = @preg_replace("/{이미지\:([0-9]+)[:]?([^}]*)}/ie", "", $view['content']);
$view['rich_content'] = preg_replace("/{동영상\:([0-9]+)[:]?([^}]*)}/ie", "mw_view_movie(\$view, '\\1', '\\2')", $view['rich_content']);
위 정규표현식에서
e 수정자를 제거하고 preg_replace_callback 함수 형태로 변경하려면 ?
PS.
/bbs/view.php 파일 보니까 비슷한 코드가 있길래 그거 따라 했더니,
앞서 선언한 함수를 다시 불러올 수 없다는 에러가 뜨더라구요...
//$view['rich_content'] = preg_replace("/{이미지\:([0-9]+)[:]?([^}]*)}/ie", "view_image(\$view, '\\1', '\\2')", $view['content']); function conv_rich_content($matches) { global $view; return view_image($view, $matches[1], $matches[2]); } $view['rich_content'] = preg_replace_callback("/{이미지\:([0-9]+)[:]?([^}]*)}/i", "conv_rich_content", $view['content']);
답변 2개
</p>
<p>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); </p>
<p> $pt = mw_vimeo_pattern($content);
if ($pt)
$content = preg_replace_callback($pt, 'conv_mw_vimeo', $content);</p>
<p> return mw_video_wrapper($content);
}</p>
<p>
답변에 대한 댓글 2개
위 코드를 넣으니까, 또 아래 코드에서 동일한 에러가... ^^;;;;
/skin/board/miwit/mw.lib/mw.function.lib.php 파일
아래 배열들에 e 수정자가 들어가서 그런 것 같은데,
제거하니까 코드가 전혀 출력이 안 되네요.
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;
}
댓글을 작성하려면 로그인이 필요합니다.
제가 제대로 고친 게 맞는지?
</p>
<p> </p>
<p>if (!$mw_basic['cf_zzal']) {
//$view['rich_content'] = @preg_replace("/{이미지\:([0-9]+)[:]?([^}]*)}/ie", "mw_view_image(\$view, '\\1', '\\2')", $view['content']);</p>
<p> function conv_rich_content1($matches)
{
global $view;
return mw_view_image($view, $matches[1], $matches[2]);
}
$view['rich_content'] = preg_replace_callback("/{이미지\:([0-9]+)[:]?([^}]*)}/i", "conv_rich_content1", $view['content']);</p>
<p>} else {
//$view['rich_content'] = @preg_replace("/{이미지\:([0-9]+)[:]?([^}]*)}/ie", "", $view['content']);</p>
<p> $view['rich_content'] = preg_replace_callback("/{이미지\:([0-9]+)[:]?([^}]*)}/i", "", $view['content']);
}</p>
<p>//$view['rich_content'] = preg_replace("/{동영상\:([0-9]+)[:]?([^}]*)}/ie", "mw_view_movie(\$view, '\\1', '\\2')", $view['rich_content']);
function conv_rich_content2($matches)
{
global $view;
return mw_view_movie($view, $matches[1], $matches[2]);
}
$view['rich_content'] = preg_replace("/{동영상\:([0-9]+)[:]?([^}]*)}/i", "conv_rich_content2", $view['rich_content']);</p>
<p> </p>
<p>
위처럼 고치니까, 일단 해당 라인에선 에러가 안 나고, 다음 코드에서 동일 에러가 나는데...
/skin/board/miwit/mw.lib/mw.function.lib.php 파일 약 3046 라인
function mw_youtube_content($content, $q='') { $pt = mw_youtube_pattern($content); if ($pt) $content = preg_replace($pt, "mw_youtube('\\1', '$q')", $content);
$pt = mw_vimeo_pattern($content); if ($pt) $content = preg_replace($pt, "mw_vimeo('\\1', '$q')", $content);
return mw_video_wrapper($content); }
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
최대 난관에 봉착해 작업을 못 하고 붕 떠있었는데...