preg_replace() 함수를 preg_replace_callback 함수로 변경하려는데요
본문
안녕하세요
에러메시지가 이렇게 나서요
Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback
아무래도 preg_replace함수를 preg_replace_callback 함수로 바꿔야 할것 같은데요
아래가 문제 에러가는 부분입니다.
아래 preg_replace함수를 preg_replace_callback 함수로 어떻게 바꿔야 할까요?
$view[rich_content] = preg_replace(
"/{이미지\:([0-9]+)[:]?([^}]*)}/ie",
"view_image(\$view, '\\1', '\\2')",
$view[content]);
답변 1
대략 아래와 같은 형태가 되지 않을까 싶습니다.
<?php
// for preg_replace with 'e' modifier
function view_image($view, $a, $b) {
return str_replace($a, $b, $view['content']);
}
// for preg_replace_callback
function view_image_func($view, $matches) {
return str_replace($matches[1], $matches[2], $view['content']);
}
$view = ['content' => '12341234ㅇㅇㅇxxㄹdd', 'rich_content' => ''];
/*$view['rich_content'] = preg_replace(
"/{이미지\:([0-9]+)[:]?([^}]*)}/ie",
"view_image(\$view, '\\1', '\\2')",
$view['content']);*/
$view['rich_content'] = preg_replace_callback(
'/{이미지\:([0-9]+)[:]?([^}]*)}/i',
function ($matches) use ($view) { return view_image_func($view, $matches); },
$view['content']);
print('<pre>');
print_r($view);
print('</pre>');
?>
답변을 작성하시기 전에 로그인 해주세요.