preg_match의 pattern인자에서 modifier(구분자?)별 의미

i : 대소문자 구분안함
u : utf-8(자세한 사항은 확인 중)

utf-8에서 모든문자를 각각의 문자별로 자르기
예제)
<?php
$str = '한글 english どをウィ 中國 #&*§※☆★';
preg_match_all('/./u', $str, $match);
echo implode(',', $match[1]);
?>

결과값)
   한,글, ,e,n,g,l,i,s,h, ,ど,を,ウ,ィ, ,中,國, ,#,&,*,§,※,☆,★


by 뭔일이여 2009. 3. 2. 13:57
g 옵션이 있을경우와 없을경우의 차이

match : 전체 문자열을 반복적으로 검색해 해당하는 모든 결과를 배열로 뿌려줌
괄호로 묶은 부분은 찾은 문자에서 두번째값으로 지정되어야 하지만 match함수에서 g 옵션이 들어갈 경우
값이 할당되지 않는다. g 옵션이 없을 경우에는 처음 찾은 값만 리턴하기 때문에 두번째값으로 지정됨
ex)
<script type="text/javascript>
<!--
    var temp = "\"첫번째\" \"두번재\"\n\"세번째\"";
    var reg = /"([^"]+)"/igm;
    document.write(temp.match(reg));
    //결과값 : "첫번째","두번재","세번째"

    var reg = /"([^"]+)"/im;
    document.write(temp.match(reg));
    //결과값 : "첫번째",첫번째    <=== 따옴표가 없는 첫번째 는 괄호안의 검색 값임
//-->
</script>

exec : 문자열에서 해당하는 값을 배열로 뿌려줌
한번 검색 시 처음 해당하는 값만 뿌려줌
<script type="text/javascript">
<!--
    var temp = "\"첫번째\" \"두번재\"\n\"세번째\"";
    var reg = /"([^"]+)"/igm;
    document.write(reg.exec(temp));
    document.write(reg.exec(temp));
    //결과값 : "첫번째",첫번째"두번째",두번째
//-->
</script>

g 옵션이 있을경우 한번 검색하면 다음으로 포인터가 넘어가고 없을경우에는 첫번째 해당하는 값만 리턴해줌
전체 문자열에서 검색을 하기 위해선 다음과 같이하면 된다
<script type="text/javascript">
<!--
    var temp = "\"첫번째\" \"두번재\"\n\"세번째\"";
    var res = null;
    while((res = reg.exec(temp)) != null) {
        document.write(res+' - ');
    }
    //결과값 : "첫번째",첫번째 - "두번째",두번째 - "세번째",세번째 -
//-->
</script>
by 뭔일이여 2009. 1. 13. 13:16

<script type="text/javascript">
<!--
function random_number(num, to) {
    var randNum = Math.random();
    if(isNaN(num) || to != undefined) {
        if(to != undefined) {
            var num_ = new Array();
            for(var i=num, ii=0; i<=to; i++) {
                num_[ii] = i;
                ii++;
            }
        }
        try {
            var numLen = num_.length-1;
            var randRet = Math.round(randNum*numLen);
            var retVal = num_[randRet];
            if(retVal == undefined) { return ' "'+randRet+'" '; }
            return retVal;//+' "'+num_+'" ';
        } catch(e) {
            return false;
        }
    } else {
        var retVal = Math.round(randNum*num);
        if(retVal == undefined) { return ' "'+randNum+'" '; }
        return retVal;//+' "'+randNum+'" ';
    }
}

/*
randLoad
  obj
  type
  ext
  num
  to
  randNum
  objSrc
  ext
  objLen
  w, h
 
  debug
*/
randomLoad = function(randObj, type, ext) {
    this.obj  = randObj;
    this.type = type;
    this.ext  = ext;

    this.link = new Array();
}
randomLoad.prototype.init = function() {
    if(this.num != undefined) {
        if(this.to != undefined) { this.randNum = random_number(this.num, this.to); }
        else { this.randNum = random_number(this.num); }
        this.objSrc = this.obj+this.randNum+this.ext;
    } else {
        try {
            this.objLen = this.obj.length-1;
            this.randNum = random_number(this.objLen);
            this.objSrc = this.obj[this.randNum]+this.ext;
        } catch(e) {
            alert("입력값이 잘못되었습니다.\n다시 설정해 주세요.");
            return false;
        }
    }
    if(this.prepath != undefined) { this.objSrc = this.prepath+this.objSrc; }
    if(this.debug == true) { document.test.num.value = 'rand:'+this.randNum+' from:'+this.num+' to:'+this.to; }
    this.load();
}
randomLoad.prototype.load = function() {
    if(this.type == 'image') {
        var src = '<img src="'+this.objSrc+'" border="0"';
        if(this.w != undefined) { src += ' width="'+this.w+'"'; }
        if(this.h != undefined) { src += ' width="'+this.h+'"'; }
        src += ' />';
    } else if(this.type == 'swf' || this.type == 'movie') {
        var w = this.w != undefined ? this.w : false;
        var h = this.h != undefined ? this.h : false;
        var src = object_load(this.type, this.objSrc+this.ext, w, h, false);
    }
    if(this.link.length>1) { src = '<a href="'+this.link[this.randNum]+'">'+src+'</a>'; }
    if(this.target != undefined) { el_id(this.target).innerHTML = src; }
    else { document.write(src); }
}
//-->
</script>

by 뭔일이여 2007. 5. 9. 13:05

최근 게시물을 불러올때 하나의 레이어 부분에 여러 개시판을 탭으로 불러오는 소스
우선 버전까지 넣고 계속 업그레이드를 해볼 예정이다...ㅋ
사용 방법은 아래 사용법 보기를 클릭하면 볼 수 있다.

by 뭔일이여 2006. 11. 16. 10:36
| 1 |