lang/php
PHP 상대주소 절대주소변경
C/H
2018. 7. 11. 08:30
PHP >= 7.0.0 : preg_replace /e modifier는 지원되지 않는다.
[함수] 상대경로를 특정URI 기준의 절대경로로 변환하기 에서 원래 소스를 확인 할 수 있다.
preg_replace to preg_replace_callback
function http_src_to_abs($content, $base_uri) { $pattern_a = array("@(\s*href|\s*src)(\s*=\s*'{1})([^']+)('{1})@i" , "@(\s*href|\s*src)(\s*=\s*\"{1})([^\"]+)(\"{1})@i" , "@(\s*href|\s*src)(\s*=\s*)([^\s>\"\']+)(\s|>)@i"); // $replace_a = array("'\\1\\2'.http_path_to_url('\\3', '$base_uri').'\\4'" // , "'\\1'.stripslashes('\\2').http_path_to_url('\\3', '$base_uri').stripslashes('\\4')" // , "'\\1\\2'.http_path_to_url('\\3', '$base_uri').'\\4'"); $content = preg_replace_callback($pattern_a[0], function($m) use($base_uri){ return $m[1].$m[2].http_path_to_url($m[3], $base_uri).$m[4]; }, $content); $content = preg_replace_callback($pattern_a[1], function($m) use($base_uri){ return $m[1].stripslashes($m[2]).http_path_to_url($m[3], $base_uri).stripslashes($m[4]); }, $content); $content = preg_replace_callback($pattern_a[2], function($m) use($base_uri){ return $m[1].$m[2].http_path_to_url($m[3], $base_uri).$m[4]; }, $content); return $content; }
반응형