Search

'Web Dev/PHP'에 해당되는 글 3건

  1. 2012.09.12 [PHP] 모바일 접속 체크
  2. 2011.06.01 [ PHP ] 정규식
  3. 2011.02.14 [ PHP ] PHP 자료형 비교표

[PHP] 모바일 접속 체크

Web Dev/PHP 2012. 9. 12. 21:24 Posted by ditus

<?php
function MobileCheck() { 
    global $HTTP_USER_AGENT; 
    $MobileArray  = array("iphone","lgtelecom","skt","mobile","samsung","nokia","blackberry","android","android","sony","phone");

    $checkCount = 0; 
        for($i=0; $i<sizeof($MobileArray); $i++){ 
            if(preg_match("/$MobileArray[$i]/", strtolower($HTTP_USER_AGENT))){ $checkCount++; break; } 
        } 
   return ($checkCount >= 1) ? "Mobile" : "Computer"; 
}
?>

위 코드를 index페이지나 공통적으로 include되는 파일에 복사 해서 붙여넣는다.
이코드는 현재 접속한 기기가 모바일 인지를 체크하고 하고, $MobileArray에 제시된 형태의 기기에서 접속하면 모바일 이라고 체크해준다.

 

<?php
if(MobileCheck() == "Mobile"){ 
    echo"현재 휴대폰으로 접속했습니다."; 
}else{ 
    echo"현재 컴퓨터로 접속했습니다."; 
}
?>

[ PHP ] 정규식

Web Dev/PHP 2011. 6. 1. 11:09 Posted by ditus
출처 : http://cheolgoon.tistory.com/69


우선 간단한 정규식 표현
-------------
[abc]     a,b,c 로 이루어진 문자열
[a-c]     a 에서 c 까지의 문자로 이루어진 문자열
[a-z]     a 에서 z 까지의 문자로 이루어진 문자열
[A-Z]     대문자 A 에서 Z 까지의 문자로 이루어진 문자열
[a-zA-Z]  소문자 a 에서 z 까지, 대문자 A 에서 Z 까지의 문자로 이루어진 문자열
[0-9]     0 에서 9 까지의 숫자(문자?) 로 이루어진 문자열
[!@#_0-9] !,@,#,_ 와 0 에서 9 까지의 문자로만 이루어진 문자열
-------------

바로 앞 문자열의 개수를 지정하는 중괄호 {}
중괄호는({}) 는 바로 앞의 문자나 문자열의 개수를 지정해 주는 특수문자로, 사용 형식은 다음과 같다.

--------------
사용예제  내용
a{2}b     aab 를 가진 문자열을 사용할 수 있다. 즉 (2) 는 {} 앞에 있는 문자 a 의 개수가 2개인 것을 의미
a{2,}b    a 의 개수가 최소 2개 이상인 문자열을 의미. aab, aaab, aaaab 모두 사용할 수 있다.
--------------

시작과 끝을 알리는 ^,$
^,$ 는 문자열의 시작과 끝을 알리는 특수문자이다.
만약 abc 라는 문자열이 있으면 이 문자열은 a 로 시작하여 c 로 끝난다.
이때 정규 표현식에서 a 부터 검사하라는 의미로 a 앞에 문자열의 시작을 알리는 ^ 를,
c 의 끝에 문자열의 끝을 알리는 $ 를 붙여서 정규 표현식을 시작한다.
^,$ 를 표로 정리하면 다음과 같다.
---------------
사용예제  내용
^abc      a 에서부터 문자가 시작되는 것을 알린다.
abc$      c 가 문자열의 끝임을 알린다.
---------------

문자열 사용 막기:
사용할 수 있는 문자열을 지정하는 정규 표현식의 문자는 [] 이다.
이와 반대로 특정 문자열을 사용할 수 없도록 지정하고 싶다면, 지정하는 대괄호 [] 사이에 삿갓(^) 표시를 입력하면 된다.
예를 들어 [^123] 과 같이 사용하면 1,2,3 숫자는 문자열로 사용할 수 없다.

<?
$text = "test1234";
$result = ereg("^[a-z]{4}[0-9]{4}$",$text);
echo $result."<br>"; // 1 출력
/*
[a-z]{4} 의 의미는, 위의 문자가 알파벳 a 에서 z 까지 4개의 문자로 이루어진 것인지 검사하는 양식이다.
test 는 소문자 a 에서 z 까지 4개의 알파벳 문자로 이루어진 것이고, 1234 는 0 에서 9 까지의 숫자중에서 4개로 이루어진 값이므로,
True 인 1 을 반환한다.
*/
?>

바로 앞 문자열의 반복을 의미하는 *,+,? 문자
*,+,? 문자들은 해당 문자의 바로 앞 문자를 의미하며, 그 문자가 하나 이상이라는 것을 의미한다.
이 세 개의 문자열은 비슷한 정의를 가지고 있지만, 실제 사용하는 데에는 약간의 차이를 갖는다.
다음은 이 세 가지 특수문자열을 정의하고 실제 사용하는 예를 나타낸 표이다.

--------------------------------------
사용예제 결과값                  내용
a*b      b,ab,aab,aaab,aaaab...  b 앞에 a 가 없거나 하나 이상 존재하는 모든 문자열
a+b      ab,aab,aaab,aaaab...    b 앞에 a 가 최소한 하나 이상은 존재하는 모든 문자열
ab?c     abc, ac                 a 와 c 사이에 b 가 하나 있거나 혹은 없는 문자열
--------------------------------------

정규 표현식에서 특수문자를 사용하기 위한 역슬래시(\)
정규 표현식에서 입력받은 문자열의 타당성을 검사하기 위한 특수문자가 아니라,
실제 사용해야 할 특수문자가 있을 때는 그 문자 앞에 역슬래시(\)로 해당 문자열을 이스케이프해야 한다.
특수문자를 이스케이프 한다는 이유는, 우리가 이메일이나 홈페이지 주소 등을 정규 표현식으로 검사할 때
실제 'small@small.co.kr' 와 같이 이메일 주소에 사용하는 특수문자 '.' 는 그대로 살려야 하기 때문이다.

정규 표현식 특수문자를 이용하여 이메일 주소 체크하기

$ereg = "^[_0-9a-zA-Z]+(\.[_0-9a-zA-Z-]+)*@[0-9a-zA-Z-]+(\.[0-9a-zA-Z-]+)+$";

예시 이메일주소)
small@small.co.kr

맨앞의 사용자 계정은 영문 소문자와 대문자, 숫자 그리고 음수 기호(-), 언더바(_), 점(.)과 같은
특수문자의 조합으로 구성되므로, 다음과 같은 정규 표현식을 작성할 수 있다.

^[_0-9a-zA-Z-]

정규 표현식에서 ^ 문자는 문자열의 시작을 알리는 것이다.
처음 문자열인 사용자 계정 이름의 시작을 0 에서 9 까지의 숫자나 소문자 a 에서 소문자 z, 대문자 A 에서 대문자 Z 까지 사용하게 지정.
그런데, 사용자 계정에서
.small@small.co.kr 이나 small.@small.co.kr 처럼 사용자 계정의 이름을 점(.) 으로 시작하거나 끝낼수는 없으므로,
아래의 하나의 패턴을 더 추가한다.

^[_0-9a-zA-Z-]+(\.[_0-9a-zA-Z-]+)*

여기서 마지막 문자열 * 는 바로 앞에 있는 괄호의 반복 () 을 뜻한다.
따라서, small, small.co, small.co.kr 등의 값들이 모두 참이 된다.
하지만, 실제 이런 사용자 계정은 없으므로,
입력한 사용자 계정 이름을 가져오고 이메일 계정을 의미하는 @ 를 붙여준다.

다시 이메일 주소의 서버 이름의 체크 정규 표현식을 만든다.
사용자 계정 이름을 검사하는 정규 표현식과 서버 이름 체크의 정규 표현식이 거의 비슷하므로,
다음과 같이 앞부분을 복사하여 하나 더 만들고, 서버 이름에는 언더바(_) 가 업으므로, 언더바(_) 를 지운다.
또, 서버 이름을 체크하는 정규 표현식이 끝나면 더 이상 이메일 주소가 없기 때문에 맨 마지막에 문자열의 끝을 알려주는 $ 문자를 입력한다.

^[_0-9a-zA-Z-]+(\.0-9a-zA-Z-]+*@(0-9a-zA-Z-]+(\.[0-9a-zA-Z-]+)+@

이제 정규 표현식과 eregi 함수만으로 이메일 주소의 타당성을 검사할수 있다.

표현식에서 () 는 그 부분들을 묶어주는 역할을 하는 듯 하다(일반 연산에서와 같은 방식으로)
단, ()* 로 사용하면,() 안의 내용을 반복 한다는 뜻.


<?
$ereg = "^[_0-9a-zA-Z-]+(\.[_0-9a-zA-Z-]+)*@[0-9a-zA-Z-]+(\.[0-9a-zA-Z-]+)+$";

$email = ".asdf.ae@asdf.co.kr";

$result = eregi($ereg,$email);
if($result==1){
  echo "입력하신 이메일 주소 $email 는 정상적인 이메일 주소입니다";
}else{
  echo "$email 는 정규 표현식에 어긋나는 이메일 주소 입니다";
}
?>

정규식에 일치하면 1 을 반환. 아니면 반환값 없음.

위의 이메일 주소가 정상적이라고 출력됨(정규 표현식 불완전)

[ PHP ] PHP 자료형 비교표

Web Dev/PHP 2011. 2. 14. 16:08 Posted by ditus

PHP 함수로 $x 비교하기
Expression gettype() empty() is_null() isset() boolean : if($x)
$x = ""; string TRUE FALSE TRUE FALSE
$x = null; NULL TRUE TRUE FALSE FALSE
var $x; NULL TRUE TRUE FALSE FALSE
$x is undefined NULL TRUE TRUE FALSE FALSE
$x = array(); array TRUE FALSE TRUE FALSE
$x = false; boolean TRUE FALSE TRUE FALSE
$x = true; boolean FALSE FALSE TRUE TRUE
$x = 1; integer FALSE FALSE TRUE TRUE
$x = 42; integer FALSE FALSE TRUE TRUE
$x = 0; integer TRUE FALSE TRUE FALSE
$x = -1; integer FALSE FALSE TRUE TRUE
$x = "1"; string FALSE FALSE TRUE TRUE
$x = "0"; string TRUE FALSE TRUE FALSE
$x = "-1"; string FALSE FALSE TRUE TRUE
$x = "php"; string FALSE FALSE TRUE TRUE
$x = "true"; string FALSE FALSE TRUE TRUE
$x = "false"; string FALSE FALSE TRUE TRUE

==로 느슨한 비교
TRUE FALSE 1 0 -1 "1" "0" "-1" NULL array() "php" ""
TRUE TRUE FALSE TRUE FALSE TRUE TRUE FALSE TRUE FALSE FALSE TRUE FALSE
FALSE FALSE TRUE FALSE TRUE FALSE FALSE TRUE FALSE TRUE TRUE FALSE TRUE
1 TRUE FALSE TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE
0 FALSE TRUE FALSE TRUE FALSE FALSE TRUE FALSE TRUE FALSE TRUE TRUE
-1 TRUE FALSE FALSE FALSE TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE
"1" TRUE FALSE TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE
"0" FALSE TRUE FALSE TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE
"-1" TRUE FALSE FALSE FALSE TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE
NULL FALSE TRUE FALSE TRUE FALSE FALSE FALSE FALSE TRUE TRUE FALSE TRUE
array() FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE FALSE FALSE
"php" TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE
"" FALSE TRUE FALSE TRUE FALSE FALSE FALSE FALSE TRUE FALSE FALSE TRUE

===로 엄격한 비교
  TRUE FALSE 1 0 -1 "1" "0" "-1" NULL array() "php" ""
TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
1 FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
0 FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
-1 FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
"1" FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE
"0" FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE
"-1" FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE
NULL FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE
array() FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE
"php" FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE
"" FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE