English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
preg_match 함수는 정규 표현식 일치를 수행합니다.
int preg_match ( string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] )
subject와 pattern이 주어진 정규 표현식과 일치하는 일치를 검색합니다.
파라미터 설명:
$pattern: 검색할 패턴, 문자열 형식.
$subject: 입력 문자열.
$matches: matches 매개변수가 제공되면, 그것은 검색 결과로 채워집니다. $matches[0]은 전체 패턴 일치 텍스트를 포함합니다. $matches[1]는 첫 번째 캡처된 서브그룹에 일치하는 텍스트를 포함합니다. 이를 계속하여.
$flags: flags는 다음과 같은 표시 값으로 설정될 수 있습니다:
PREG_OFFSET_CAPTURE: 이 표시를 전달하면, 매칭이 발견될 때마다 문자열 오프셋(목표 문자열에 대한)이 추가됩니다. 주의: 이는 matches 매개변수에 채워진 배열을 변경하여, 각 요소가 다음과 같은 형식으로 됩니다:1요소는 일치 문자열이 목표 문자열(subject)에서의 오프셋 위치입니다.
offset: 일반적으로, 검색은 목표 문자열의 시작 위치에서 시작됩니다. 선택적 매개변수 offset는 목표 문자열의 어떤 불명확한 시작 위치에서 검색을 지정하는 데 사용됩니다(단위는 바이트입니다).
pattern의 일치 횟수를 반환합니다. 그 값은 0회(일치하지 않음) 또는 1 두 번째로, preg_match()는 첫 번째 일치 후 검색을 중지합니다. preg_match_all()는 다릅니다. 그것은 주제(Subject)까지 검색을 계속합니다. 오류가 발생하면 preg_match()는 FALSE를 반환합니다.
<?php
//모드 구분자 뒤의 "i" 표시는 대소문자를 구분하지 않는 검색임을 나타냅니다
if (preg_match("/php/i", "PHP는 웹 스크립팅 언어입니다.")) {
echo "php와 일치하는 문자열을 찾았습니다。";
} else {
echo "php와 일치하는 문자열을 찾지 못했습니다。";
}
?>
실제 결과는 다음과 같습니다:
php와 일치하는 문자열을 찾았습니다.
<?php
/* 모드에서 \b 표시는 단어 경계를 나타냅니다. 따라서 독립된 단어 "web"만 일치하며, 다음과 같이 일치하지 않습니다:
* 예: "webbing" 또는 "cobweb"와 같은 단어의 일부 */
if (preg_match("/\bweb\b/i", "PHP는 웹 스크립팅 언어입니다.")) {
echo "일치하는 문자열을 찾았습니다。\n";
} else {
echo "일치하는 문자열을 찾지 못했습니다。\n";
}
if (preg_match("/\bweb\b/i", "PHP는 선택된 웹 스크립팅 언어입니다.")) {
echo "일치하는 문자열을 찾았습니다。\n";
} else {
echo "일치하는 문자열을 찾지 못했습니다。\n";
}
?>
실제 결과는 다음과 같습니다:
일치하는 문자열을 찾았습니다。 일치하는 문자열을 찾지 못했습니다。
<?php
// URL에서 호스트 이름을 가져옵니다
preg_match('@^(?:http://)?([^/]+)@i',
"http://ko.oldtoolbag.com/index.html", $matches);
$host = $matches[1];
// 호스트 이름의 두 부분을 가져옵니다
preg_match('/[^.]+\.[^.]+$/', $host, $matches);
echo "도메인 이름은: {$matches[0]}\n";
?>
실제 결과는 다음과 같습니다:
도메인 이름은: oldtoolbag.com
<?php
$str = 'foobar: 2008';
preg_match('/(?P<name>\w+): (?P<digit>\d+)/', $str, $matches);
/* 아래 예제는 php 5.2.2(pcre 7.0) 또는 최신 버전에서 작동하지만, 후방 호환성을 위해 위의 방법이 권장됩니다. */
// preg_match('/(?<name>\w+): (?<digit>\d+)/', $str, $matches);
print_r($matches);
?>
실제 결과는 다음과 같습니다:
Array ( [0] => foobar: 2008 [name] => foobar [1] => foobar [digit] => 2008 [2] => 2008 )