본문 바로가기
프로그래밍 놀이터/Web

[PHP Tutorial] 문자열 연산과 정규 표현식

by 돼지왕 왕돼지 2013. 11. 11.
반응형


 PHP Tutorial, 문자열 연산과 정규 표현식

 

[PHP Tutorial] 문자열 연산과 정규 표현식


=======

문자열 다듬기


trim(), ltrim(), rtrim()  ( rtrim 은 chop 과 같다. )



=======

문자열 정돈


nl2br()

\n 을 < /br> 또는 <br> 로 변환시킨다.



=======

대소문자 바꾸기


strtoupper()

strtolower()

ucfirst() 

문장의 처음이 알파벳이면 그것만 대문자

ucwords()

각 단어의 첫 알파벳을 대문자로



=======

데이터베이스 저장 위한 문자열 다듬기


addslashes()

stripslashes()


php 설정에 따라서 자동으로 \ 를 추가해주는 경우도 있긴 하다.

설정의 magic_quotes_gpc 에 의해 제어된다.

여기서 gpc 는 GET, POST, Cookie 의 앞글자.

get_magic_quotes_gps() 함수를 사용하여 시스템이 이 기능을 활성화시켰는지 알 수 있다.

만약 이 기능이 활성화되어 있으면 사용자 데이터 출력하기 전 stripslashes() 를 호출해주어야 한다.



=======

문자열 합치고 나누기


array exlode( string separator, string input [, int limit] );

string implode( string implodechar, array array ) ( join() 도 마찬가지 )


string strtok( string input, string seperator );

strtok() 은 exlode 와 달리 한번에 하나씩 문자열을 조각낸다.


$token = strtok( $feedback, ' ' );

echo $token.'<br />';

while( $token != '')

{

  $token = strtok( ' ' );

  echo $token.'<br />';

};



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







=======

문자열 비교하기


strcmp()

strcasecmp()

strnatcmp()

"2" "12" 를 비교하는 경우 sttcmp() 는 "2" 가 크다고 판별하지만 strnatcmp() 는 "12" 가 크다고 한다.

nat 은 natural order 의 약자.



=======

문자열 길이 알기


strlen()



=======

문자열을 일치시키고 맞바꾸기


string strstr( string haystack, string needle );

hay stack 안에서 needle 이 있는지 찾아보는 것이다. 기준은 첫 매치.


strchr()

chr 을 찾는데, 마지막 매치를 기준으로 한다.



=======

문자열 위치 찾기


int strpos( string haystack, string needle [,int offset] );


strrpos()

뒤에서부터 검색한다.



=======

문자열 대체하기


mixed str_replace( mixed needle, mixed new_needle, mixed haystack[, int &count] );

count 는 몇 번 바꿨는지를 기록한다.

needle 에는 배열을 넣어서 여러가지를 한가지 형태로 변형시킬수도 이다.


string substr_replace( string string, string replacement, int start [, int length] );



=======

정규 표현식의 소개


문자집합과 클래스.


. 은 \n 을 제외한 모든 문자 대신.

[a-z] 은 a~z 까지의 한글자를 대신.

[a-zA-Z] 는 대소문자 a~z 까지의 한글자를 대신.

[^a-z] a~z 까지가 아닌 한글자를 대신.


[[:alnum:]] 알파벳 문자, 숫자

[[:alpha:]] 알파벳 문자

[[:lower:]] 소문자

[[:upper:]] 대문자

[[:digit:]] 십진법의 숫자

[[:xdigit:]] 16진법의 숫자, 문자

[[:punct:]] 구두점

[[:blank:]] 탭, 스페이스

[[:space:]] 공백문자들

[[:cntrl:]] 컨트롤 문자들

[[:print:]] 모든 출력 가능한 문자들

[[:graph:]] 스페이스를 제외한 모든 출력 가능한 문자들


*는 0번 이상 반복

+는 1번 이상 반복


(문자열)*문자열2 : 문자열 뒤에 문자열2가 바로 나타남. () 는 옵션, 즉 있을수도 없을수도.


(문자열){횟수} : 횟수만큼 반복. , 로 구분할 경우 예를 들어 {1,3} 의 경우 최소 1번 최대 3번 반복.

 {2, } 최소 2번 이상 반복.


^ 는 정규식의 시작부분

$ 는 정규식의 마지막 부분


| 를 통해 선택을 할 수 있다.







int ereg( string pattern, string search [, array matches] );


eregi()

대소문자 구별 x



=======

정규식으로 문자열 교체하기


string ereg_replace( string pattern, string replacement, string search );

search 는 target str.



=======

정규식으로 문자열 분리하기


array split( string pattern, string search [, int max] );



=======

정규식 함수는 문자열 함수에 비해 보통 비효율적이다

따라서 작성해야 할 프로그램이 간단하면 가능한 문자열 함수를 사용해야 좋다.







반응형

댓글