Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 인프런
- Python
- JavaScript
- 따배씨
- DP
- BFS
- C언어
- sorting
- Cleancode
- programmers
- web
- 따라하며 배우는 C언어
- udemy
- BOJ
- String
- BASIC
- 백준
- dfs
- server
- php
- 종만북
- greedy
- C
- 따라하면서 배우는 C언어
- 생활코딩
- graph
- Algospot
- Math
- 정수론
- Algorithm
Archives
- Today
- Total
몽상실현개발주의
[생활코딩] 13.2 검색 1 ~ 13.4 검색 3 본문
생활코딩 php 강좌
13. PHP와 정규표현식
13.2 검색 1
<?php
if (preg_match("/\bweb\b/i", "PHP is the web scripting leanguage of choice.")){
echo "A match was found.";
}else {
echo "A match was not found.";
}
if (preg_match("/\bweb\b/i", "PHP is the website scripting leanguage of choice.")){
echo "A match was found.";
}else {
echo "A match was not found.";
}
- "\b" 는 단어의 경계를 의미
- "\b" 로 감싸진 "web" 은 "web" 이라는 독립된 단어를 의미
- "website" 는 "web"과 "site"가 결합된 단어이기 때문에 이 조건에 해당X
<?php
$subject = 'coding everybody http://opentutorials.org egoing@egoing.com 010-0000-0000';
preg_match('/coding/', $subject, $match);
print_r($match);
?>
// Array ( [0] => coding )
- preg_match(검색어, 대상, 결과 저장 array)
- 검색 문자열 "coding" 에 해당하는 문자열을 대상 문자열에서 찾은 뒤, $match 에 Array 형태로 저장함
<?php
$subject = 'coding everybody http://opentutorials.org egoing@egoing.com 010-0000-0000';
preg_match('#http://\w+\.\w+#', $subject, $match);
print_r($match);
?>
// Array ( [0] => http://opentutorials.org )
- "#http://\w+.\w+#"
- "http://----.----" 문자열 정규 표현
- "\w" : 문자를 의미
- "+" : 하나 이상
- "\w+": 하나 이상의 문자열
- "\ ."' : "." 문자
- "." 표현은 Any Character 이기 때문에 "\." 표현이 문자 "."
<?php
$subject = 'coding everybody http://opentutorials.org egoing@egoing.com 010-0000-0000';
preg_match('#(http://\w+\.\w+)\s\w+@\w+\.\w+#', $subject, $match);
var_dump($match);
?>
// array(2) {
// [0]=> string(38) "http://opentutorials.org egoing@egoing"
// [1]=> string(24) "http://opentutorials.org"
// }
- "#(http://\w+.\w+)\s\w+@\w+.\w+#"
- "http://----.---- ----@----" 문자열 정규 표현
- "\w" : 문자를 의미
- "+" : 하나 이상
- "\w+": 하나 이상의 문자열
- "\ ." : "." 문자
- "." 표현은 Any Character 이기 때문에 "\." 표현이 문자 "."
- "\s" : space (공백)
<?php
$subject = 'coding everybody http://opentutorials.org egoing@egoing.com 010-0000-0000';
preg_match('#(http://\w+\.\w+)\s(\w+@.\w+)#', $subject, $match);
var_dump($match);
?>
// array(3) {
// [0]=> string(38) "http://opentutorials.org egoing@egoing"
// [1]=> string(24) "http://opentutorials.org"
// [2]=> string(13) "egoing@egoing"
// }
- "()" 괄호에 의해, 각각의 검색 결과가 subPattern 으로 Array 에 저장 됨
- Capturing 또는 역참조
- array[0] : 전체 패턴
- array[1] : 첫번째 괄호
- array[2] : 두번째 괄호
<?php
$subject = 'coding everybody http://opentutorials.org egoing@egoing.com 010-0000-0000';
preg_match('#(http://\w+\.\w+)\s(\w+@.\w+)#', $subject, $match);
var_dump($match);
echo "<br/>";
echo "homepage: ".$match[1];
echo "<br/>";
echo "email: ".$match[2];
?>
// array(3) {
// [0]=> string(38) "http://opentutorials.org egoing@egoing"
// [1]=> string(24) "http://opentutorials.org"
// [2]=> string(13) "egoing@egoing"
// }
// homepage: http://opentutorials.org
// email: egoing@egoing
- 정규 표현식과 괄호를 이용하여 검색 결과를 편하게 사용 가능
13.3 검색 2
<?php
// get host name from URL
preg_match('@^(?:http://)?([^/]+)@i', "http://www.php.net/index.html", $matches);
print_r($matches);
$host = $matches[1];
// Array ( [0] => http://www.php.net [1] => www.php.net )
// get last two segments of host name
preg_match('/[^.]+\.[^.]+$/', $host, $matches);
echo "<br/>domain name is : {$matches[0]}\n";
?>
// domain name is : php.net
- "@^(?:http://)?([ ^/ ]+)@i"
- "^" : 행의 시작점
- "?:" : Capturing 시 해당하는 내용은 포함시키지 않음
- "?" : 수량자, 0~1 인 경우
- "@^(?:http://)@" : "http://" 가 없거나 있지만 하나만 존재하는 것으로 시작하면서 "http://" 부분은 포함되지 않는 행의 표현식
- " [ ^/ ]" : 대괄호 안의 "^"(캐럿)은 not 을 의미
- "/" 가 아닌 다른 문자
- " [ ^/ ]+" : "/" 문자를 만나기 전까지의 문자열
- 결과 : Array ( [0] => http://www.php.net [1] => www.php.net )
- "/[ ^. ]+ \ .[ ^. ]+$/"
- "[ ^. ]+ " : "." 이 아닌 문자가 1개 이상
- "\ ." : "." 을 문자로 처리
- "." 은 AnyCharacter 이기 때문에 "\ ." 로 "." 을 문자로 처리
- "$" : 문자열의 끝, 검색의 기준이 문자열의 끝으로 생각해야함
- 결과 : php.net
13.4 검색 3
<?php
$str = 'foobar: 2008';
preg_match('/(?P<name>\w+): (?P<digit>\d+)/', $str, $matches);
print_r($matches);
?>
// Array (
// [0] => foobar: 2008
// [name] => foobar
// [1] => foobar
// [digit] => 2008
// [2] => 2008
// )
- "/(?P<name>\w+): (?P<digit>\d+)/"
- "\w+" : 문자열
- "?P<name>\w+" : <name> 이라는 key 값으로 문자열을 저장
- ":" : ":" 문자
- "\d+" : digit 문자열
- "?P<digit>\d+" : <digit> 이라는 key 값으로 digit 문자열을 저장
- 결과 : Array ( [0] => foobar: 2008 [name] => foobar [1] => foobar [digit] => 2008 [2] => 2008 )
- sub pattern 을 index 뿐만 아니라, 연관배열의 key 값으로 sub pattern 의 이름을 지정하여 저장 가능
이 글의 모든 사진과 내용의 출처는 생활코딩에 있음을 알려드립니다.
'Language > php' 카테고리의 다른 글
[생활코딩] 14.1 데이터베이스란 (0) | 2021.05.20 |
---|---|
[생활코딩] 13.5 치환 1 ~ 13.6 치환 2 (0) | 2021.05.18 |
[생활코딩] 13.1 정규표현식 소개 (0) | 2021.05.18 |
[생활코딩] 12. 이미지 다루기 (0) | 2021.05.18 |
[생활코딩] 11.5 파일 업로드를 위한 form ~ 11.7 파일 업로드 - 수신 Application (0) | 2021.05.13 |
Comments