cgy12306
문자열 본문
문자열
문자열을 표기할 땐 ‘(단따옴표), “(쌍따옴표)를 사용한다.
‘나 “를그냥 문자로 표기할 땐 \를 앞에 붙여준다.
줄 바꿈 할 때는 쌍따옴표 안에서 \n, \r을 사용한다.
문자열 안에서 변수를 사용하려면 쌍따옴표 안에서 {}(중괄호)를 사용한다.
문자와 문자를 더 할 때는 .(마침표)를 사용한다.
이 부분은 앞의 예제에서 많이 봤기 때문에 그냥 넘어가겠다.
정규표현식
정규 표현식은 문자열을 처리하는 방법 중의 하나로 특정한 조건의 문자를 검색하거나 치환하는 과정을 매우 간편하게 처리할 수 있도록 하는 수단이다.
PHP와 정규표현식
PHP의 정규표현식은 구분자로 시작해서 구분자로 끝을 내야한다.
닫히는 구분자 뒤에는 옵션이 위치할 수 있는데 옵션에 따라서 정규표현식이 다르게 동작한다. i는 대소문자를 구분하지 않고, m은 줄 바꿈 문자에 따라서 텍스트의 행을 구분하도록 한다.
ex) /foo bar/im
PHP는 UNIX 스타일의 정규표현식인 ereg와 perl 스타일의 정규표현식인 preg를 사용한다. 이 중에서 ereg는 폐지 예정이기 때문에 사용해서는 안된다.
preg_match
preg_match는 검색을 수행하고 일치하는 내용을 반환한다.
\b는 단어의 경계를 의미한다. 그렇기 때문에 \b로 감싸진 web은 web이라는 독립된 단어를 의미한다. website는 web과 site가 결합된 단어이기 때문에 이 조건에 해당되지 않는다.
~는 다른 구분자이다. \w는 문자를 의미한다. \.은 일반 마침표를 의미한다. \s는 공백을 의미한다. 괄호로 묶어주면 독립된 데이터로 추출하겠다는 것이다. 캡쳐링이라고 한다.
[0]에 들어가는 내용은 괄호 두개를 합친 것이고 [1]에는 첫번째 괄호, [2]에는 두번째 괄호가 들어간다.
preg_match의 세번째 인자는 preg_match에서 알아서 변수를 생성해주고 결과값을 넣어준다.
http://로 시작하는 걸 찾는다. ?:를 쓰면 matches안에 담기지 않게 된다. ?는 없거나 하나만 등장하게 한다. ^는 어떤 문자열의 시작이지만 대괄호안에 들어가게 되면 not을 의미하게 된다.
www.php.net이 host에 들어가게 된다.
두번째 preg_match는 .이 아닌 문자가 1개 이상 + . + .이아닌 문자 1개 이상 + 문자열의 끝에 해당되는 경계($) 이다.
matches에는 php.net이 들어가게 된다.
문자가 하나보다 많다면 괄호로 감싸주고 name이 배열안에 있는 키 값을 의미, +는 하나이상을 의미. 연관배열로 되어있음.
preg_replace
preg_replace는 검색한 다음 치환명령을 수행한다.
첫번째 인자는 패턴, 두번째 인자는 변경할 값, 세번째 인자는 문자열(변수)
${번호} 번호에 해당하는 하위표현식에 해당, 그러면 April1이 들어간다. 뒤에 $3인 2003이 들어간다.
인덱스 순서대로 치환이 되는게 아닌 배열의 생성 순서대로 치환이 된다.
quick => bear, brown => black, fox => slow 로 변경된다.
패턴을 보면 (19또는 20)(2자리숫자) – (숫자가 한자리 이상 두자리 이하) – (한자리이상 두자리 이하), (제일 처음 공백이 있을 수도 있고 없을 수도 있다{문자열 하나 이상}공백이 있을 수도 있고 없을 수도 있다 =
replace는 3번째, 4번째, 1번째, 2번째 값이 온다. 그 후 첫번째 인덱스 =
이렇게 된다.
궁금한 점은 배열상으론 날짜가 나오고 startdate라는 문자가 되어있는데 출력 순서는 startdate후에 날짜가 나온다는 점이다.
출처 : https://opentutorials.org/course/62/5141