«   2018/07   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        
Archives
Today
31
Total
1,123,200
안정적인 DNS서비스 DNSEver
관리 메뉴

Blue Breeze

PHP 상대주소 절대주소변경 본문

Language/PHP

PHP 상대주소 절대주소변경

푸른바람 C/H 2018.07.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;
}


0 Comments
댓글쓰기 폼