'Language/PHP'에 해당되는 글 85건

  1. 2010.10.19 ajax + php
  2. 2010.10.19 PHP에서 JSON 사용하기
  3. 2010.10.19 inconv, 인코딩
  4. 2010.09.28 php 파일처리 관련함수
  5. 2010.09.27 정규식 예제들
  6. 2010.09.15 [PHP] 세션 만료 시간
  7. 2010.08.31 timestamp
  8. 2010.08.19 substr
  9. 2010.08.14 fsockopen
  10. 2010.08.10 Variable 함수

ajax + php

Language/PHP 2010. 10. 19. 14:59
※. php 5  이상은 자체 함수 지원, 이하는 JSON.php 필요
quickstart_h.php


<?
 header("Content-Type: text/html; charset=KS_C_5601-1987");
 header("Cache-Control:no-cache");
 header("Pragma:no-cache");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>AJAX with PHP: Quickstart</title>
    <script type="text/javascript" src="quickstart.js"></script>
  </head>
  <body onload='process()'>
    Server wants to know your name:
    <input type="text" id="myName" />
 <input type="text" name="test[]" value="aaa" />
 <input type="text" name="test[]" value="bbb" />
 <input type="text" name="test[]" value="ccc" />
 <input type="text" name="test[]" value="ddd" /> 
   
 <div id="divMessage" />
  </body>
</html>


quickstart.js



<?
 header("Content-Type: text/html; charset=KS_C_5601-1987");
 header("Cache-Control:no-cache");
 header("Pragma:no-cache");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>AJAX with PHP: Quickstart</title>
    <script type="text/javascript" src="quickstart.js"></script>
  </head>
  <body onload='process()'>
    Server wants to know your name:
    <input type="text" id="myName" />
 <input type="text" name="test[]" value="aaa" />
 <input type="text" name="test[]" value="bbb" />
 <input type="text" name="test[]" value="ccc" />
 <input type="text" name="test[]" value="ddd" /> 
   
 <div id="divMessage" />
  </body>
</html>


quickstart.php

<?php
 require 'JSON.php';
 // create a new instance of Services_JSON
 $json = new Services_JSON();
 // convert a complexe value to JSON notation, and send it to the browser
 $value = array('foo'=>'test', 'bar', array(1, 2, 'baz'), array(3, array(4)));
 $output = $json->encode($value);
 //echo $output;
 // prints: ["foo","bar",[1,2,"baz"],[3,[4]]]
 
 $people ='
   { "programmers": [
  { "firstName": "Brett", "lastName":"McLaughlin", "email": "brett@newInstance.com" },
  { "firstName": "Jason", "lastName":"Hunter", "email": "jason@servlets.com" },
  { "firstName": "Elliotte", "lastName":"Harold", "email": "elharo@macfaq.com" }
    ],
   "authors": [
  { "firstName": "Isaac", "lastName": "Asimov", "genre": "science fiction" },
  { "firstName": "Tad", "lastName": "Williams", "genre": "fantasy" },
  { "firstName": "Frank", "lastName": "Peretti", "genre": "christian fiction" }
    ],
   "musicians": [
  { "firstName": "Eric", "lastName": "Clapton", "instrument": "guitar" },
  { "firstName": "Sergei", "lastName": "Rachmaninoff", "instrument": "piano" }
    ]
   }';
  echo $people;

 
?>

'Language > PHP' 카테고리의 다른 글

basename()  (0) 2010.11.04
chr, ord, mb_strlen(한글 길이 리턴)  (0) 2010.10.27
PHP에서 JSON 사용하기  (0) 2010.10.19
inconv, 인코딩  (0) 2010.10.19
php 파일처리 관련함수  (0) 2010.09.28
:

PHP에서 JSON 사용하기

Language/PHP 2010. 10. 19. 13:11

json을 처음 공부하려는 사람이라면, 일단 도움이 되는 기술 문서를 정독하라.

 Ajax 마스터하기, Part 10: 데이터 전송에 JSON 사용하기

 Ajax 마스터하기, Part 11: 서버 측의 JSON

위의 두 기술문서는 IBM에 있는 자료인데, JSON의 개념을 정말 쉽게 잘 써놨다.

PHP에서 JSON 사용하기 준비물

일단 준비물. js파일은 필요 없다. JSON은 자바스크립트에 기본으로 내장돼있다.

JSON은 네이티브 JavaScript 포맷이고, JavaScript 내에서 JSON 데이터와 작업하기 위해 특별한 API나 툴킷이 필요 없다.

 Ajax 마스터하기, Part 10: 데이터 전송에 JSON 사용하기

이걸 강조해 둔 이유는 내가 js파일을 찾느라 시간을 꽤 허비했기 때문이다;;

PHP 버전 : 5.2.1 이상

PHP 버전이 5.2.1 이상이라면 PHP에도 JSON이 기본으로 내장돼있다. 이 경우에 사용하는 함수는 세 가지다.

  • json_decode — JSON 문자열을 PHP 배열로 바꾼다.
  • json_encode — PHP 배열을 JSON 문자열로 바꾼다.
  • json_last_error — 마지막으로 일어난 에러를 반환한다.

PHP.net JSON 매뉴얼 중

PHP 버전 : 5.2.1 미만 4.3 이상

PHP 버전이 5.2.1 미만이고 4.3 이상이라면(혹시 몰라 하는 얘긴데, 자기 php 버전은 phpinfo() 하나만 써주면 나온다.) JSON 라이브러리를 가져와야 한다. 4.3보다 낮으면 아예 지원 안 되는 것 같다. 그런데 요즘 누가 4.3 미만 버전을 쓸까. 걱정할 것 없을 듯.

JSON을 PHP에 설치하는 방법도 있는 것 같은데, 호스팅 업체를 이용하는 경우라면 설치해달라고 전화해야 하고 복잡할 수 있겠다.(사실 이거 설친지 뭔지 잘 알지는 못하겠다. 맨 아래 있는 링크에 들어가보면 설치하는 방법이 있길래 하는 소리다.)

JSON 홈페이지는 json.org인데 여기 가면 난감하다. json 로직을 설명하고 있고, 언어별로 엄청 다양한 라이브러리를 링크해놨는데 그야말로 눈 돌아간다. 여기서 또 PHP용 JSON 라이브러리를 찾느라 애먹었다.

PHP JSON 라이브러리(JSON.php)는 Package Information: Services_JSON을 다운받으면 된다.

JSON.php 파일에는 Services_JSON 클래스가 있다. 다음 예제처럼 사용하면 된다.

01.require 'JSON.php';
02.  
03.// create a new instance of Services_JSON
04.$json = new Services_JSON();
05.  
06.// convert a complexe value to JSON notation, and send it to the browser
07.$value = array('foo', 'bar', array(1, 2, 'baz'), array(3, array(4)));
08.$output = $json->encode($value);
09.  
10.print($output);
11.// prints: ["foo","bar",[1,2,"baz"],[3,[4]]]
12.  
13.// accept incoming POST data, assumed to be in JSON notation
14.$input = file_get_contents('php://input', 1000000);
15.$value = $json->decode($input);

일단 Services_JSON 객체를 $json이란 이름으로 생성하고, 함수를 호출해서 사용하는 것이다.

배열 안에 배열을 저장하는 형태로 PHP 배열을 만들고, $json->encode($array) 함수를 사용하면 된다.

JavaScript를 사용할 때 주의할 점

보통은 Ajax를 사용할 때 JSON을 사용할 것으로 생각된다. 그렇다면, 일단 문자열을 JSON 객체로 만들어서 사용할 텐데, myJsonObject를 JSON 객체라고 치자. 내용을 호출하려면 다음과 같은 방식이 돼야 할 것이다.

myJsonObject.Child[0].name

여기서 강조하고 싶은 것은, Child가 여러 개일 경우에는 배열이고, 따라서 당연히 배열을 호출해야 한다는 것이다. 이걸 까먹을 때가 많아서 굳이 적었다.

예컨대 다음과 같은 JSON 문자열을 JSON 객체로 만들었다고 치자.

01.var people =
02.  { "programmers": [
03.    { "firstName": "Brett", "lastName":"McLaughlin", "email": "brett@newInstance.com" },
04.    { "firstName": "Jason", "lastName":"Hunter", "email": "jason@servlets.com" },
05.    { "firstName": "Elliotte", "lastName":"Harold", "email": "elharo@macfaq.com" }
06.   ],
07.  "authors": [
08.    { "firstName": "Isaac", "lastName": "Asimov", "genre": "science fiction" },
09.    { "firstName": "Tad", "lastName": "Williams", "genre": "fantasy" },
10.    { "firstName": "Frank", "lastName": "Peretti", "genre": "christian fiction" }
11.   ],
12.  "musicians": [
13.    { "firstName": "Eric", "lastName": "Clapton", "instrument": "guitar" },
14.    { "firstName": "Sergei", "lastName": "Rachmaninoff", "instrument": "piano" }
15.   ]
16.  }

그렇다면 이런 식으로 호출해야 하는 것이다.

1.people.programmers[0].lastName;
2.people.authors[1].genre         // Value is "fantasy"
3.people.musicians[3].lastName        // Undefined. This refers to the fourth entry, and there isn't one
4.people.programmers.[2].firstName    // Value is "Elliotte"

ajax에서 JSON 문자열을 받았을 때 JSON 객체로 만드는 명령어

이건 쉽게 구할 수 있겠지만 보관 차원에서 적어 둔다.

01.function callback(){
02.    //readystate 요청 상태 -- 4 : complete
03.    if(xmlHttp.readyState == 4){
04.    //서버의 응답 상태 : 200 : ok
05.        if(xmlHttp.status == 200){
06.        // responseText -- 서버에서 응답한 데이터.
07.            var jsonData=xmlHttp.responseText;
08.            var myJSONObject=eval('('+jsonData+')');
09.        }
10.    }
11.}

8번 라인이 중요한데, JSON 문자열인 jsonData를 eval 함수를 이용해 가공한다.

PHP JSON 한글 처리

이건 정공법이 뭔지는 모르겠는데, 누군가 urlencode(), urldecode() 함수로 처리하는 방법을 적어뒀길래 링크한다.

PHP 에서 JSON 사용하기

이 분 코드는 다음과 같다.

1.<?php
2.$val = array(urlencode("에혀~"), "1", 23);
3.$output = json_encode($val);
4.echo urldecode($output)."\n";
5.  
6.//결과
7.//["에혀~","1",23] 
8.?>


출처  - http://mytory.textcube.com/36

'Language > PHP' 카테고리의 다른 글

chr, ord, mb_strlen(한글 길이 리턴)  (0) 2010.10.27
ajax + php  (0) 2010.10.19
inconv, 인코딩  (0) 2010.10.19
php 파일처리 관련함수  (0) 2010.09.28
정규식 예제들  (0) 2010.09.27
:

inconv, 인코딩

Language/PHP 2010. 10. 19. 10:38

UTF-8을 EUC-KR로 변경
$str = iconv("UTF-8", "EUC-KR", $str);

EUC-KR을 UTF-8로 변경
$str = iconv("EUC-KR", "UTF-8", $str);

다른 서버에서 글 내용을 가져와 파싱하는 경우에 특히 많이 사용하게 된다.
상식적으로 알아둘 점: EUC-KR에서 한글은 2byte, UTF-8에서 한글은 3byte이다.
글자수 기준으로 substr() 함수를 이용하여 자를 때 참고해두자.

[출처] php 인코딩 iconv|작성자 밍밍

'Language > PHP' 카테고리의 다른 글

ajax + php  (0) 2010.10.19
PHP에서 JSON 사용하기  (0) 2010.10.19
php 파일처리 관련함수  (0) 2010.09.28
정규식 예제들  (0) 2010.09.27
[PHP] 세션 만료 시간  (0) 2010.09.15
:

php 파일처리 관련함수

Language/PHP 2010. 9. 28. 14:09

1. fopen

정의

int fopen (string filename, string mide [, int use_include_path])

파일이나 URL을 읽기나 쓰기등 지정한 파일모드로 연다.

지정한 파일을 연다.

지정 가능모드.

(r : 파일을 읽기 모드로 연다. 파일 포인터는 해당 파일의 처음에 위치하게 된다.

 r+: 파일을 읽기와 쓰기 모드로 연다. 파일포인터는 해당파일의 처음에 위치.

 w: 파일을 쓰기 모드로 연다. 파일이 존재하지 않을경우 새로 생성시킨다.

 w+: 읽기와 쓰기 모드로 연다. 파일이 존재하지 않을 경우 새로 생성시킨다.

 a : 파일을 쓰기 모드로 연다. 파일의 포인터는 해당 파일의 마지막에 위치하게 된다.

      파일이 존재하지 않을 경우 새로 생성시킨다.

 a+: 읽기 및 쓰기 모드로 연다.)

 

2.fclose

정의

int fclose(int fp)

fopen()으로 연 파일을 닫는다.

 

3. fread

정의

string fread(int fp, int length)

파일에서 특정 byte수 만큼을 읽어들여 문자열로 반환한다.

 

4. fwrite

정의

int fwrite (int fp, string string[, int length]);

파일에 특정 byte수 만큼을 쓴다. length를 지정해주지 않으면 지정해준 string을 모두 파일에 쓴다.

 

5. feof

정의

int feof(int fp)

파일 포인터의 위치가 파일의 끝인지를 검사한다.

 

6. fgets

정의

string fgets(int fp, int length)

파일 포인터가 가리키는 파일에서 (length-1) byte만큼 읽어들이기 전에 개행문자나 EOF를 만나면

읽기를 중단한다. 파일을 줄 단위로 읽는데 유용하게 쓰인다.

지정한 파일에서 개행 문자나 EOF를 만나기 전까지 특정 byte수만큼 읽어들인다.

 

7. fputs

정의

int fputs (int fp, string str [, int longth])

fwrite()와 완전히 동일한 함수.

 

8. fpassthru

정의

int fpassthru(int fp)

파일 포인터가 가리키는 파일내 현재의 위치에서 파일의 끝(EOF)까지를 읽어들여 표준 출력 장치로 출력하고 파일을 닫는다.

fpassthru()함수를 호출하고 다시 fclose()함수를 호출하면 에러가 난다. 유의한다.

 

9. readfile

정의

int readfile (string filename [, int use_include_path[)

파일을 읽어 표준 출력 장치에 출력하고 읽어들인 문자열의 크기를 반환한다.

인자로 전달받은 파일의 전체 내용을 출력한다.

 

10. fgetc

정의

string fgetc(int fp)

파일로부터 한 문자를 읽어들인다.

 

11. fgetss

정의

string fgetss (int fp, int length [, string allowable_tags])

fgets()함수와 strip_tags()함수를 합쳐놓은 기능을 한다.

-1문자열을 가져오며, HTML이나 PHP태그를 제거한다.

 

12. fgetcsv

정의

array fgetcsv(int fp, int length[, string delimiter])

파일 포인터가 가리키는 CSV타입의 파일로부터 한 줄씩 읽어들인 문자열을 배열의 형태로 반환한다.

'Language > PHP' 카테고리의 다른 글

PHP에서 JSON 사용하기  (0) 2010.10.19
inconv, 인코딩  (0) 2010.10.19
정규식 예제들  (0) 2010.09.27
[PHP] 세션 만료 시간  (0) 2010.09.15
timestamp  (0) 2010.08.31
:

정규식 예제들

Language/PHP 2010. 9. 27. 19:31

 

local get get_path


get = au3.ControlGetText("Total C", "", "TMyPanel2")

 

regex.match( get, ?#(.+)\\#, ?#\1#, "get_Path")

 

win.debugshow( get_Path)

 

 

 

local get get_path


get = au3.ControlGetText("Total C", "", "TMyPanel2")

 

regex.replace( get, ?#(.+)\\#, ?#\1#, "get_Path")

 

win.debugshow( get_Path)

 

 

 

위의 식에서 사용되는 것은

정규표현식 이라고 하는 것이죠. Regular Expression

 

이것도 알아두면 편리할 때가 많습니다.

카페에서 정규표현 또는 Regular Expression 으로 검색하면, 여러 게시물들이 있을 겁니다.

 

이런 내용도 대충만 알면..

그것이 정확히 어떻게 동작하는지는 몰라도,,  알아먹을 수는 있습니다.

 

이게 대충 이렇게 되는 것 아닐까 .. ㅎㅎㅎ 하는 수준.. 사실 그 정도만 해도 됩니다.

마찬가지로.. 필요할 때, 이것을 정규표현 식으로 할 수 있을까.. 라는 생각만 할 정도면 됩니다.

 

PP 는 유틸리티 이므로..

무슨 필요가 있어야만 사용하는 프로그램이죠..

따라서, 어떤 필요... 반복작업, 귀찮음, ....  이런 필요에 의해서 PP를 찾게 되는데..

그 해결방법의 하나로 정규표현 이라는 개념을 알면..  또 더 쉽게 해결할 수 있을지도 모르니까요.

 

 

 

일단.. 기본적인 것들은 .. 사용할 줄은 몰라도.. 대충 알고 있으면, 정작 필요할 때, 정말 도움이 됩니다.

 

 

정규표현 식을 배울려면.. ㅎㅎㅎ 무지무지 한가 보더군요.

이것 역시 책 한 권으로 끝낼 분량이 아닌 모양입니다. ㅎㅎㅎ

 

허지만, 우리가 전문가는 아니고.. 대충 사용할 수 있을 정도면.. 그리 많은 분량은 아닙니다.

http://xpg.in/totalcmd/forum/viewtopic.php?t=329  에 있는 정도.. 그것도 대충만 알아도 큰 도움이 됩니다.

 

 

 

 

일단.. 위에 표현된 정규식 만 생각해 보자면요..

 

?#(.+)\\#, ?#\1#,

 

이것이죠..

 

. (점) 임의의 한 문자

. 은. 점은..

모든 문자 라는 의미입니다. 어떤 글자라도.. 한글, 영문, 숫자.. 기호.. 모든 문자 입니다. 단 하나의 글자이죠.

 

 

 

 

\^     ^  

\[     [  

\(     (  

\|    |  

\+    +  

\{     {  

\.     .

\$    $

\)     )

\*     *

\?     ?

\\    \

\n    줄넘김 문자  

\w    알파벳과 _ (언더바)  

\s    빈 공간(space)  

\d    숫자  

\b    단어와 단어 사이의 경계  

\t     Tab 문자

\r     리턴 문자

\W    알파벳과 _ 가 아닌 것

\S    빈 공간이 아닌 것

\D    숫자가 아닌 것

\B    단어 사이의 경계가 아닌 것

\xnn  16진수 nn에 해당하는 문자

 

(?:pattern)

 

pattern 을 찾지만 검색한 문자열을 캡처하지 않는다. 즉, 검색한 문자열을 나중에 사용할 수 있도록 저장하지 않는 비캡처 검색이다. 이것은 패턴의 일부를 "or" 문자(|)로 묶을 때 유용하다. 예를 들어, 'industr(?:y|ies) 는 'industry|industries' 보다 더 경제적인 식이다.

 

 

 

에효.. 그냥 복사해 왔습니다. ㅎㅎㅎ

 

 

 

 

*, +, ?는 각각 {0,}, {1,}, {0,1}과 같습니다.

 

 

 

\n은 ( ) 하부식 중에서 n번째 하부식을 가리킵니다. 

 

예제) (.+)([ㄱ-ㅎ가-핳]+)([a-z]+)\1+

 

\1로 되어 있으니까 첫번째 부분식 (.+)를 가리킵니다. 위 내용을 해석하자면, 일단 (.+)가 있으니까 이에 해당되는 내용을 찾고, \1+이 있으니까 첫번째 부분식 (.+)와 똑같은 내용이 그 뒤에 1번 이상( + 때문에) 있는 문자열을 찾습니다.

 

이 상황에서

 

\3

은... ([a-z]+) 를 가리킵니다.

 

\2

([ㄱ-ㅎ가-핳]+)  를 가리킬테죠..

 

 

 

우리나라 abcd 1234

 

이런 표현이 있다면..  이 표현을 찾기 위해선..

([가-핳]+) ([a-z]+) ([0-9]+)

이런 패턴이 필요할 겁니다. 띄어쓰기로. 공백을 살려주구요..

 

이 상황에서.

 

\1

은 ([가-핳]+) 이 되겠구요. 그 값은..  우리나라

 

\2

는 ([a-z]+) 이 되겠구요.. 그 값은..   abcd

 

\3

은 ([0-9]+) 이 되겠구요.  그 값은..   1234

 

그러면..

\0

은.. 일단 찾은 모든 것입니다.

그러므로..   우리나라 abcd 1234 이 될 겁니다.

 

 

 

 

 

 

 

자 이제.. 제대로 살펴보죠.. 위의 표를 기준으로..

 

?#(.+)\\#

 

라는 것은..

 

어떤 임의의 문자가 1 개 이상 있다는 뜻입니다.

 

\\  은.. \ 를 가리키는 것이겠죠. 특수문자이므로.. \ 를 앞에 붙여서 \\ 라는 방식으로  \ 를 표현하는 것이죠.

 

따라서 위 문장은..

 

임의의 문자가 한 개 이상 있고. 그 다음에 \ 이 있는 표현..   이라는 뜻일 겁니다.

또 그것을 한 묶음으로 (  ) 본다는 뜻이구요.

 

 

 

 

?#\1#

 

이 표현은 앞 뒤의 # 은 " 따옴표를 대신하는 것이구요.

즉, ?"    "  의 표현입니다. http://cafe.naver.com/powerpro/636  참고..

 

 

\1  이라는 표현은.. 위에서 보면.

 

하부식 중에서 n번째 하부식을 가리킵니다 라고 나오네요..

여기에서는 (  ) 괄호로 묶여있는 것이 1 개 밖에 없으므로.. 당연히

괄호로 묶여 있는 부분을 바로 가리킵니다.

괄호가 여러개 묶여있는 표현에서는.. 첫번째 괄호를 나타내겠죠.

두번째 괄호는 \2  세번째 괄호는 \3 ....  이런 순서일 겁니다.

 

 

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 

 

대충 간단한 표현 몇가지만 일면.. 대충 모든 스크립트가 이해될 겁니다. 다 알필요도 없습니다. ㅎㅎ 항상 말하지만..

 

숫자를 나타낼 때는..

[0-9]  라고 하시면 됩니다.

 

여기서 [  ]  라는 표현은.. 그 안에 들어있는 것 중의 하나를 고른다는 뜻입니다.

즉, 0 에서부터 9 까지의 숫자중에서 하나를 고른다.. 이런 뜻이죠.

 

[0-9]{3}

이것은.. 숫자를 3 개를 고르겠다는 뜻이죠. 즉, 3 자리 정수를 표현하는 방식입니다.

 

그냥 숫자이기만 하면 된다면..

[0-9]+

이렇게 나타내면 되죠.. 몇 자리 수인지는 모르나.. 숫자가 1 개 이상..

 

 

영어를 나타내는 방식은..

[a-zA-Z]

입니다. 마찬가지로. [a-zA-Z]+  해 버리면.. 영어 단어가 되겠죠.

 

한글을 나타내는 방식은..

[ㄱ-ㅎ가-핳] 

이렇게 나타낸다고 하네요. 이론적으로는 맞죠. ㅎㅎㅎ  [ㄱ-ㅎ가-핳ㅏ-ㅣ] 도 맞지 싶네요.

 

 

 

 

 

 

아래의 표현은.. 어디선가 복사해 놓은 것인데요. ㅎㅎㅎ 죄송하고,, 또한 감사.. ^ .^

 

 

^[1-9][0-9]* 

이 표현은.. ^ 이 앞에 있으므로. [ ] 밖에 있는 ^ 기호는 앞에 오는 것이란 뜻입니다.

^The The로 시작하는 문자열

따라서.

0 아닌 숫자가 앞에 오고. 그 다음에는 어떤 숫자라도 몇자리 숫자라도 온다는 뜻이겠죠. * 는 0 이상이므로..

결론적으로... 1 자리 숫자 이상의 숫자라는 의미..

 

 

^(0|[1-9][0-9]*)

이 표현은 ( | ) 를 사용했는데요. | 의 의미는 OR 입니다. 앞이거나 뒤..

따라서,, 0 이거나.. 앞에서 생각한 숫자..

즉, 0 이어도 되고, 숫자여도 되고.. 정도겠죠.

 

 

^(0|-?[1-9][0-9]*) 

이 표현은. 

-? 라는 것은.. - 이 1 개 또는 0 개..

 

*, +, ?는 각각 {0,}, {1,}, {0,1}과 같습니다.

 

? 이 0 또는 1 개 이므로..

앞의 마이너스 - 이 있어도 되고 없어도 되고..

따라서,

0 또는 양수 또는 음수  정도가 되겠네요..

 

 

^([0-9]+|[0-9]{1,3}(,[0-9]{3})*)(.[0-9]{1,2}) 

그러면.. 이 표현은 무슨 뜻일까요??

 

이렇게 나름 재밌는 것이지만.. ㅎㅎㅎ

실제로 적용할려고하면. 무수한 삽질이 필요한 것 같더군요. ㅎㅎㅎ

수족이 고생한다는..

 

또 그래서 그런 면에서.. 뭔가 하는 것 같기도 하고.. ㅎㅎㅎ

뭐 거창한 것 다루는 느낌도 들구요. ㅎㅎ

 

그런 재미가 있습니다. 이것에도요..

 

 

-------------------------------------------------------------------------------------------------

 

 

 

우리나라 만세(萬歲)

 

라는 표현이 있다고 하죠..

 

그런데..

이 문서에서. (  ) 를 몽땅 지우고 싶습니다. 어떻게 해야 할까요?

한글이라고 가정하면. 이렇게 하면 될 겁니다.

 

 

RegEx.replace(input,?#([가-핳]+)\(.*\)#,?"\1","output")

 

즉..

한글이 몇 글자이든 하나의 묶음으로 보고, 그 다음에 ( 이 오고.. .* 어떤 글자라도 오며, 그 다음에 ) 이 오는 형태

 

그런 형태를 찾아서..

첫번째 묶음 \1 로 바꿔라..

 

첫번째 묶음은.. 괄호 앞에 오는 한글이죠..

따라서,, 괄호와 한문은 몽땅 없어지게 되는 것이죠.

 

 

생각해 보면.

알아두면 편리할 때가 많을 것 같습니다.

 

 

ㄴㅇㄻㄴㅇㄹ

 

 

http://www.egocube.pe.kr/asp_0003.asp 

 

비교적 간단한 경우인 핸드폰 번호를 정규 표현식 패턴으로 만들어 보도록 한다. 핸드폰 번호는 일반적으로 이통사의 고유 번호 3 자리, 국번 3 자리, 끝 번호 4 자리로 이루어진다. 여기에서 각 번호간의 구분은 '-' 로 한다고 임의로 정하도록 하겠다. 즉, '123-456-7890' 과 같은 형태가 된다고 가정하는 것이다.

\d    숫자  

 

\d    숫자 


 

위의 표를 살펴보면 메타 문자 '\d' 가 숫자 문자 한 문자를 나타낸다는 것을 알 수 있다. 따라서 다음과 같은 정규 표현식 패턴을 만들 수 있다.


    \d{3}-\d{3}-\d{4}



여기까지는 매우 쉽게 이해될 것이다. 즉 이 정규 표현식 패턴이 의미하는 바는 숫자 3 글자 다음에 '-' 기호가 나오고, 그 다음에 또 다시 숫자 3 글자가 나오고 그 다음에 또 '-' 기호가 나오고 마지막으로 숫자 4 글자가 나온다는 의미인 것이다. 그런데 요즘은 핸드폰이 워낙 많이 보급되다 보니 국번의 경우 3 자리 번호만 가지고서는 숫자가 많이 부족하게 되었다. 그래서 이젠 국번이 4 자리인 핸드폰 번호도 주변에서 심심치 않게 접할 수 있는 것으로 알고 있다. 그렇다면 이와 같이 4 자리 국번을 가진 핸드폰 번호를 수용할 수 있도록 하기 위해서는 위의 정규 표현식 패턴을 어떻게 바꾸는 것이 좋을까? 아마 다음과 같은 방법도 있을 수 있을 것이다.


    \d{3}-(\d{3}|\d{4})-\d{4}



폰트 때문에 보기가 좀 힘들겠지만 파이프 문자 (|) 는 마치 OR 연산자와 같은 역활을 한다. 따라서 위와 같이 파이프 문자와 소괄호를 함께 사용하면 지금과 같은 문제를 쉽게 해결할 수 있다. 그런데 이와 같이 변형된 정규 표현식 패턴은 비록 틀렸다고 말할 수는 없겠지만 아직 해결해야 할 문제점들을 몇 가지 가지고 있다.


그 중 한 가지 문제점은 소괄호 때문에 발생하는데, 이는 정규 표현식 패턴상에서 소괄호가 매우 특이한 기능을 한 가지 가지고 있기 때문이다. 이에 대한 더욱 자세한 내용은 Replace() 메소드에 관하여 설명하면서 다시 언급하겠지만 바로 '역참조' 라는 기능 때문인데, 대상 문자열이 정규 표현식 패턴과 일치할 경우 소괄호 안에 감싸인 문자열 부분은 메모리상에 미리 지정된 이름의 변수로 저장이 된다. 따라서 지금과 같이 저장된 내부 변수를 재사용하지 않는 단순한 예에서는 쓸모없이 메모리만 낭비하는 셈이다. 결국 이 정규 표현식 패턴은 다시 다음과 같이 수정된다.


    \d{3}-(?:\d{3}|\d{4})-\d{4}



이와 같이 수정하고 나면 비로서 메모리에 아무런 변수도 생기지 않는 효율적인 정규 표현식 패턴이 만들어진다. 그러나 아직도 또 다른 문제점이 하나 남아있는데 현재 상태와 같은 정규 표현식 패턴은 대상 문자열 내부에 패턴과 일치하는 문자열이 존재하기만 하면 무조건 그 조건이 만족된다. 따라서 만약 실무에서 원하는 작업이 사용자들로부터 정확한 핸드폰 번호를 입력받기를 원하는 것이라면 완벽한 해결책은 되지 못하는 셈이 된다.


구체적으로 말해서 우리가 원하는 '123-456-7890' 또는 '123-4567-8901' 과 같은 형태의 핸드폰 번호 뿐만이 아니라 전혀 쓸모없는 문자가 포함된 ' 123-456-7890' 라든가 '123-456-7890 ABC' 와 같은 형태의 문자열까지도 조건을 만족하게 되는 것이다. 따라서 순수한 핸드폰 번호 그 자체만을 만족시키려면 또 다시 다음과 같이 수정되어야 한다.


    ^\d{3}-(?:\d{3}|\d{4})-\d{4}$



위의 표에서 찾아보면 알 수 있듯이 '^' 은 문자열의 맨 처음을, '$' 는 문자열의 맨 마지막을 의미한다. 따라서 이와 같이 수정된 정규 표현식 패턴은 핸드폰 번호 그 자체 외에는 어떠한 문자열도 조건을 만족시키지 않게 되고, 이제서야 비로서 어느 정도 만족할만 하게 작성되었다고 말할 수 있을 것이다.


그러나 한 가지 유의해야 할 점은 정규 표현식의 패턴에는 정답이 없다는 것이다. 그 단적인 예로 이 정규 표현식 패턴은 실무적인 요구 조건에 대하여 좀 더 명확한 유효성을 보장받기 위해서 또 다시 다음과 같이 수정될 수도 있다.


    ^0(?:11|16|17|18|19)-(?:\d{3}|\d{4})-\d{4}$



이 정규 표현식 패턴은 현실 세계에 실제로 존재하는 이통사의 번호만을 만족한다. 이처럼 정규 표현식 패턴은 좀 더 효율적인 패턴과 좀 더 비효율적인 패턴으로 구분될 수 있을 지는 모르겠지만 사지선다형 문제에서와 같은 확실한 정답은 없다는 것이 필자의 개인적인 의견이다.

'Language > PHP' 카테고리의 다른 글

inconv, 인코딩  (0) 2010.10.19
php 파일처리 관련함수  (0) 2010.09.28
[PHP] 세션 만료 시간  (0) 2010.09.15
timestamp  (0) 2010.08.31
substr  (0) 2010.08.19
:

[PHP] 세션 만료 시간

Language/PHP 2010. 9. 15. 10:15

PHP.ini 파일에서 세션 값 설정을 조절해 준다.

여러가지 값이 있지만, 아래 두가지 값만 수정해줘도 만료 시간을 늘릴 수 있다.

 

session.cookie_lifetime = 0        '세션ID를 저장한 쿠키의 활성화 시간 또는 유효 시간을 설정
session.gc_maxlifetime = 60       '사용자가 작업이 없을 경우, 6초 후에 세션 사라짐

 

이 외에도 PHP.ini 파일안에는 세션 관련 설정 값들이 많다.

 

 

2. PHP 수정

 

session_start();

session_cache_limiter("private");
ini_set("session.cookie_lifetime", 3600);
ini_set("session.cache_expire", 3600);
ini_set("session.gc_maxlifetime", 3600);

 

위와 같이 하면 세션 만료 시간을 늘릴 수 있다.

그리고 프로그램에서의 세션 시간 설정은, 세션을 사용하는 모든 페이지에서 해줘야 한다.

즉, 인클루드 파일에 넣어서 작업하면 된다.

'Language > PHP' 카테고리의 다른 글

php 파일처리 관련함수  (0) 2010.09.28
정규식 예제들  (0) 2010.09.27
timestamp  (0) 2010.08.31
substr  (0) 2010.08.19
fsockopen  (0) 2010.08.14
:

timestamp

Language/PHP 2010. 8. 31. 18:07

참고: 전형적인 timestamp의 유효 범위는 1901년 12월 13일 금요일 20:45:54 GMT부터 2038년 1월 19일 화요일 03:14:07 GMT입니다. (이것은 부호 있는 32비트 정수형의 최소와 최대값에 대응합니다. 윈도우즈에서는 이 값은 1970-01-01부터 2038-01-19로 제한됩니다)

'Language > PHP' 카테고리의 다른 글

정규식 예제들  (0) 2010.09.27
[PHP] 세션 만료 시간  (0) 2010.09.15
substr  (0) 2010.08.19
fsockopen  (0) 2010.08.14
Variable 함수  (0) 2010.08.10
:

substr

Language/PHP 2010. 8. 19. 16:34

substr

(PHP 3, PHP 4 )

substr -- 문자열의 일부를 반환한다.

설명

string substr ( string string, int start [, int length])

Substr은 startlength 매개변수에 의해 지정된 string 문자열의 일부를 반환한다.

만약 start양수라면, 반환되는 문자열은 0부터 시작되는 stringstart번째 위치에서 시작하는 문자열이 될 것이다. 예를 들어 문자열 'abcdef'이 있다고 하자. 0의 위치에 있는 문자는 'a'가 되고, 2의 위치에 있는 문자는 'c'가 되는 식이다.

예:

$rest = substr ("abcdef", 1);    //  "bcdef" 을 반환한다.

$rest = substr ("abcdef", 1, 3); //  "bcd" 을 반환한다.

만약 start가 음수라면, 반환되는 문자열은 string의 끝에서부터 start번째 부터 시작하는 문자열이 된다.

예:

$rest = substr ("abcdef", -1);    // "f" 를 반환

$rest = substr ("abcdef", -2);    // "ef" 를 반환

$rest = substr ("abcdef", -3, 1); // "d" 를 반환

만약 length이 주어지고 양의 값이라면, 반환되는 문자열은 start에서 시작해서 length에서 끝나는 문자열이 될 것이다. 만약 (시작이 문자열의 끝을 지나기 때문에) 문자열이 음의 길이를 갖는 결과가 된다면, 반환되는 문자열은 start의 문자 하나가 될 것이다. (역자주: 빈문자열이 출력된다.)

만약 length이 음의 값이라면, 스트링의 끝에서 부터 시작해서 length의 위치에 있는 문자가 반환되는 문자열의 끝이 되는 문자열이 된다. 만약 문자열이 음의 길이를 갖는 결과가 나온다면, 반환되는 문자열은 start의 문자 하나가 될 것이다. (역자주: 빈문자열이 출력된다.)

예:

$rest = substr ("abcdef", 1, -1); // "bcde"를 반환한다.

[출처] substr|작성자 수채화

'Language > PHP' 카테고리의 다른 글

[PHP] 세션 만료 시간  (0) 2010.09.15
timestamp  (0) 2010.08.31
fsockopen  (0) 2010.08.14
Variable 함수  (0) 2010.08.10
strtr 과 str_replace함수 차이  (0) 2010.08.02
:

fsockopen

Language/PHP 2010. 8. 14. 01:01


<?
function url_fsockopen($host,$path) {

    //$host : 도메인(IP)
    //$path : 도메인(IP) 뒤에 붙는 주소값
    $port = "7080";
    //$host = "news.naver.com";
    //$path = "/main/main.nhn?mode=LSD&mid=sec&sid1=105";
    $out = "GET $path HTTP/1.0\r\nHost: $host\r\n\r\n";

    $fp = fsockopen($host, $port, $errno, $errstr, 30);

    if (!$fp) {
     echo "$errstr ($errno)<br>\n";
    } else {

        $out = "GET ".$path." HTTP/1.1\r\n";
        $out .= "Host: ".$host."\r\n";
        $out .= "Connection: Close\r\n\r\n";

        fwrite($fp, $out);
        $i = 0;
        while (!feof($fp)) {
           $result.= fgets($fp, 128);
           //$i+=1;
        }
        fclose($fp);
        return $result;
    }
}

$line =url_fsockopen("news.naver.com","/main/main.nhn?mode=LSD&mid=sec&sid1=105");

echo trim($line);
?>


 

'Language > PHP' 카테고리의 다른 글

timestamp  (0) 2010.08.31
substr  (0) 2010.08.19
Variable 함수  (0) 2010.08.10
strtr 과 str_replace함수 차이  (0) 2010.08.02
php.ini Session 옵션  (0) 2010.08.02
:

Variable 함수

Language/PHP 2010. 8. 10. 18:24
  • Variable 함수
    gettype -- 변수의 type을 구한다.

    intval -- 변수의 정수값을 구한다.

    doubleval! -- 변수의 실수(double)값을 구한다.

    empty -- 변수가 값이 비어 있는가 검사한다.

    is_array -- 변수가 배열인가 검사한다.

    is_double -- 변수가 실수인가 검사한다.

    is_float -- 변수가 실수인가 검사한다.

    is_int -- 변수가 정수인가 검사한다.

    is_integer -- 변수가 정수인가 검사한다.

    is_long -- 변수가 정수인가 검사한다.

    is_object -- 변수가 객체(object)인가 검사한다.

    is_real -- 변수가 실수인가 검사한다.

    is_string -- 변수가 문자열인가 검사한다.

    isset -- 변수에 값이 있는가 검사한다.

    settype -- 변수의 type을 설정한다.

    strval -- 변수의 값을 문자열로 만든다.

    unset -- 변수를 Unset한다.
  • [출처] Variable 함수 모음()|작성자 밍밍

    'Language > PHP' 카테고리의 다른 글

    substr  (0) 2010.08.19
    fsockopen  (0) 2010.08.14
    strtr 과 str_replace함수 차이  (0) 2010.08.02
    php.ini Session 옵션  (0) 2010.08.02
    Warning: main(): URL file-access is disabled in the server  (0) 2010.08.01
    :