2007. 9. 12. 10:22

특정 문자열만 추출하는 함수


<?php
/**
 * 문자열중 특정 내용만 추출하는 함수
 * $contents 는 되도록이면 참조형으로 넘길것
 * USE_STATIC 문자열 추출후 그후에 나오는 문자를 또 추출하려 할때 위치를 기억함
 * USE_SKIP 추출할 문자열 이전에 동일 문자열이 있을경우 offset 을 특정문자열까지 건너뛸려고 할때 사용
 * USE_RESET _STATIC 모드로 사용중 처음부터 다시 문자열을 찾으려고 할경우 offset을 0으로 리셋
 * 옵션을 주지 않고 사용할경우 최초문자열만을 리턴
 *
 * @param text $contents
 * @param text $start_string
 * @param text $end_string
 * @param int $opt (USE_STATIC | USE_SKIP | USE_RESET)
 * @return mix(text/null)
 */
define('USE_STATIC',1);
define('USE_SKIP',2);
define('USE_RESET',4);
function parseString($contents, $start_string, $end_string, $opt = NULL) {
    if($opt & USE_STATIC) {
        static $pos = 0;
        
        if($opt & USE_RESET) {
            $pos = 0;
            return NULL;
        }
    }
    else {
        $pos = 0;
    }
    
    $spos = strpos($contents, $start_string, $pos);
    if($spos === FALSE) {
        return NULL;
    }
    $spos = $spos + strlen($start_string);
    $pos = $spos;

    if($opt & USE_SKIP) {
        return NULL;
    }
    
    $epos = strpos($contents, $end_string, $pos);
    if($epos === FALSE) {
        return NULL;
    }
    $pos = $epos;
    
    return substr($contents,$spos,$epos-$spos);
}

?>