>  기사  >  백엔드 개발  >  내 미래를 사랑하는 예쁜 리듬 PHP의 일반 처리 기능 요약 및 분석

내 미래를 사랑하는 예쁜 리듬 PHP의 일반 처리 기능 요약 및 분석

WBOY
WBOY원래의
2016-07-29 08:38:18941검색

preg_grep
(PHP 4, PHP 5)
preg_grep - 패턴과 일치하는 배열 요소를 반환합니다.
설명
array preg_grep ( 문자열 패턴, 배열 입력 [, int 플래그] )
preg_grep()은 주어진 패턴과 일치하는 입력 배열의 셀을 포함하는 배열을 반환합니다.
플래그는 다음 플래그일 수 있습니다:
PREG_GREP_INVERT
전달된 경우 preg_grep()은 입력 배열에서 주어진 패턴과 일치하지 않는 셀을 반환합니다. 이 태그는 PHP 4.2.0부터 사용할 수 있습니다.
PHP 4.0.4부터 preg_grep()이 반환한 결과는 입력 배열의 키를 사용하여 색인화됩니다. 이러한 결과를 원하지 않으면 array_values()를 사용하여 preg_grep()에서 반환된 결과를 다시 색인화하세요.
위는 매뉴얼의 preg_grep()에 대한 설명입니다. 우선 이것은 perl 호환 정규 함수이므로 preg_grep은 p(perl)reg(regular)_grep을 의미하는 것으로 추측됩니다. 자체 확장을 통해 배열에 사용할 수 있다는 것이 특징입니다. 다차원 배열에서 일치하며 플래그 매개변수를 통해 일치하거나 일치하지 않는 배열을 반환할 수 있습니다. foreach(...){if...} 구조(검증되지 않음)를 사용하는 것보다 효율성이 훨씬 빠르며 복잡한 패턴과 일치할 수 있습니다. 검색 및 정렬과 같은 응용 프로그램에 매우 유용합니다.
예:
$arr = array('abc'=>12.213,'bb'=>12345,'ba'=>23.2321,34.3,'23'=> ;'3.3','23434'=>'bbb');
// 부동 소수점 숫자를 포함하는 모든 배열 요소를 반환합니다.
$fl_array = preg_grep ("/^(d )?.d $/", $arr)
print_r($fl_array)
?>
preg_match
; >= 3.0.9, PHP 4, PHP 5)
preg_match -- 정규식 일치 수행
설명
int preg_match ( 문자열 패턴, 문자열 주제 [, 배열 일치 [, int 플래그]] )
제목 문자열에서 패턴으로 제공된 정규식과 일치하는 콘텐츠를 검색하세요.
일치하는 항목이 제공되면 검색 결과로 채워집니다. $matches[0]에는 전체 패턴과 일치하는 텍스트가 포함되고, $matches[1]에는 괄호 안의 첫 번째 캡처된 하위 패턴과 일치하는 텍스트가 포함됩니다.
플래그는 다음 플래그일 수 있습니다.
PREG_OFFSET_CAPTURE
이 플래그가 설정되면 일치하는 결과가 발생할 때마다 관련 문자열 오프셋도 반환됩니다. 이는 반환된 배열의 값을 변경하여 배열의 각 셀도 배열이 되도록 합니다. 여기서 첫 번째 항목은 일치하는 문자열이고 두 번째 항목은 해당 오프셋입니다. 이 태그는 PHP 4.3.0부터 사용할 수 있습니다.
flags 매개변수는 PHP 4.3.0부터 사용할 수 있습니다.
preg_match()는 패턴이 일치하는 횟수를 반환합니다. preg_match()가 첫 번째 일치 이후 검색을 중지하므로 0회(일치 없음) 또는 1회입니다. 반대로 preg_match_all()은 제목 끝까지 검색합니다. 오류가 발생하면 preg_match()는 FALSE를 반환합니다.
팁: 문자열이 다른 문자열에 포함되어 있는지 확인하고 싶다면 preg_match()를 사용하지 마세요. 대신 strpos() 또는 strstr()을 사용할 수 있으며 이는 훨씬 빠릅니다.
위는 매뉴얼에 있는 preg_match()에 대한 설명입니다. 이 함수의 기능은 특정 문자열이 특정 요구 사항을 충족하는지 확인하는 데 사용할 수 있다는 것입니다. 제한 사항은 위에서 언급한 것처럼 0회 또는 1회 일치한다는 것입니다. 그리고 반환 값은 일치 항목 수입니다. 전체 일치가 필요한 경우 preg_match_all()을 사용할 수 있으며, 자체 패턴의 반환 값으로 사용할 수 있는 $matches 배열의 역할도 언급할 가치가 있으며 이는 때때로 유용합니다.
예:
if (preg_match ("/(bwebb)s(d)/i", "PHP는 웹 45 스크립팅 웹 34 언어입니다.",$match)) {
print "일치하는 항목을 찾았습니다.";
print_r($match)
} else {
print "일치하는 항목을 찾지 못했습니다."; ;
// URL에서 호스트 이름 가져오기
preg_match("/^(http://)?([^/] )/i",
"http : //www.php.net/index.html", $matches);
$host = $matches[2];
// 호스트 이름에서 다음 두 단락을 가져옵니다.
preg_match(" /[ ^./] .[^./] $/", $host, $matches);
echo "도메인 이름: {$matches[0]}n";
?>
preg_match_all
(PHP 3 >= 3.0.9, PHP 4, PHP 5)
preg_match_all -- 전역 정규식 일치 수행
설명서에 이 함수에 대한 설명이 매우 명확해서 이겼습니다. 더 이상 설명하지 마세요.
说明
int preg_match_all ( string pattern, string subject, array matches [, int flags] )
在 subject 中搜索所有与 pattern 给出的正则表达式匹配的内容并将结果以 flags 指定的顺序放到 matches 中。 
搜索到第一个匹配项之后,接下来的搜索从上一个匹配项末尾开始。 
flags 可以是下列标记的组合(注意把 PREG_PATTERN_ORDER 和 PREG_SET_ORDER 合起来用没有意义): 
PREG_PATTERN_ORDER 
对结果排序使 $matches[0] 为全部模式匹配的数组,$matches[1] 为第一个括号中的子模式所匹配的字符串组成的数组,以此类推。 
preg_match_all ("|<[^>]+>(.*)]+>|U",
     "example: 
this is a test
",
     $out, PREG_PATTERN_ORDER);
print $out[0][0].", ".$out[0][1]."\n";
print $out[1][0].", ".$out[1][1]."\n";
?>  
本例将输出: 
example: 
this is a test

example: , this is a test
因此,$out[0] 包含匹配整个模式的字符串,$out[1] 包含一对 HTML 标记之间的字符串。 
PREG_SET_ORDER 
对结果排序使 $matches[0] 为第一组匹配项的数组,$matches[1] 为第二组匹配项的数组,以此类推。 
preg_match_all ("|<[^>]+>(.*)]+>|U",
     "example: 
this is a test
",
     $out, PREG_SET_ORDER);
print $out[0][0].", ".$out[0][1]."\n";
print $out[1][0].", ".$out[1][1]."\n";
?>  
本例将输出: 
example: , example:
this is a test
, 이것은 테스트입니다.
이 예에서 $matches[0]는 첫 번째 일치 결과 세트이고, $matches[0][0]에는 전체 패턴과 일치하는 텍스트, $matches[0][1이 포함되어 있습니다. ] 첫 번째 하위 패턴의 텍스트와 일치하는 항목이 포함됩니다. 마찬가지로, $matches[1]은 두 번째 일치 항목 집합입니다.
PREG_OFFSET_CAPTURE
이 플래그가 설정되면 일치하는 각 결과의 관련 문자열 오프셋도 반환됩니다. 이는 반환된 배열의 값을 변경하여 배열의 각 셀도 배열이 되도록 합니다. 여기서 첫 번째 항목은 일치하는 문자열이고 두 번째 항목은 subject 내의 오프셋입니다. 이 태그는 PHP 4.3.0부터 사용할 수 있습니다.
태그가 지정되지 않으면 PREG_PATTERN_ORDER로 간주됩니다.
전체 패턴이 일치하는 횟수(0일 수도 있음)를 반환하거나, 오류가 발생하면 FALSE를 반환합니다.
예제 1. 특정 텍스트에서 모든 전화번호 가져오기
preg_match_all ("/(? (d{3})? )? (?(1) [-s] ) d {3}-d{4}/x",
"555-1212 또는 1-800-555-1212로 전화", $phones);
?>
예 2. 일치하는 HTML 검색 태그(탐욕)
// \2는 역참조의 예이며, PCRE에서의 의미는
// 정규 표현식 자체의 두 번째 대괄호 세트와 일치해야 합니다. , 이 예에서
//는 ([w] )입니다. 문자열이 큰따옴표로 묶여 있으므로 백슬래시를 추가하려면
//이 필요합니다.
$html = "굵은 텍스트나를 클릭하세요"
preg_match_all ("/(<([w] )[ ^>]*>)(.*)()/", $html, $matches);
for ($i=0; $i< count($matches[0] ); $i ) {
echo "일치됨: ".$matches[0][$i]."n"
echo "1부: ".$matches[1][$i]." n";
echo "부분 2: ".$matches[3][$i]."n";
echo "부분 3: ".$matches[4][$i]."nn" ;
}
?>
preg_quote
(PHP 3 >= 3.0.9, PHP 4, PHP 5)
preg_quote -- 정규 표현식 문자
설명
string preg_quote ( string str [, string delimiter] )
preg_quote()는 str을 매개변수로 사용하고 정규식 구문에 속하는 각 문자 앞에 백슬래시를 추가합니다. 동적으로 생성된 문자열을 패턴으로 일치시켜야 하는 경우 이 함수를 사용하여 문자열에 포함될 수 있는 특수 문자를 이스케이프할 수 있습니다.
선택적 매개변수 구분 기호가 제공되면 이 문자도 이스케이프됩니다. PCRE 함수에 필요한 구분 기호를 이스케이프하는 데 사용할 수 있습니다. 가장 일반적으로 사용되는 구분 기호는 슬래시 /입니다.
정규식의 특수 문자는 다음과 같습니다: . * ?
참고: 이 함수는 바이너리 개체에 안전하게 사용할 수 있습니다.
위 내용은 매뉴얼에 설명이 매우 명확해서 자세한 내용은 다루지 않겠습니다. 또한 이 기능은 바이너리 객체에 안전하게 사용할 수 있다는 메모가 매뉴얼에 나와 있어 매우 유용합니다. .
예: 예 1. preg_quote() 예
$keywords = 'g3/400의 경우 $40'
$keywords = preg_quote($keywords, '/');
echo $keywords; // g3/400에 대해 $40를 반환합니다.
?>
예 2. 텍스트의 단어에 이탤릭체를 추가합니다.
/ / 예를 들어, preg_quote($word)는 정규식
//에 없는 별표를 특별한 의미로 만드는 데 사용됩니다.
$textbody = "이 책은 찾기가 *매우* 어렵습니다."
$word = "*매우*"
$textbody = preg_replace ("/".preg_quote($word)." /",
"".$word."",
$textbody);
?>
다음 단계는 super Flex, super를 적용하는 것입니다. 기능적 강력하고 널리 사용되는 preg_replace 기능입니다.
preg_replace
(PHP 3 >= 3.0.9, PHP 4, PHP 5)
preg_replace -- 정규식 검색 및 교체 수행
설명
mixed preg_replace( 혼합 패턴, 혼합 교체 , 혼합 주제 [, int 제한] )
주제에서 패턴 패턴과 일치하는 항목을 검색하여 대체 항목으로 바꿉니다. 한계가 지정되면 한계 일치만 대체됩니다. 한계가 생략되거나 값이 -1인 경우 모든 일치가 대체됩니다.
replacement에는 \n 형식 또는 (PHP 4.0.4부터) $n 형식의 역참조가 포함될 수 있으며 후자가 선호됩니다. 이러한 각 참조는 캡처된 n번째 대괄호 하위 패턴과 일치하는 텍스트로 대체됩니다. n의 범위는 0부터 99까지이며, 여기서 \0 또는 $0은 전체 패턴과 일치하는 텍스트를 나타냅니다. 왼쪽 괄호를 왼쪽에서 오른쪽으로( 1부터 시작) 세어 하위 패턴의 수를 구합니다.
대체 패턴 뒤에 역참조 바로 뒤에 숫자가 오는 경우(예: 일치 패턴 바로 뒤에 오는 숫자) 익숙한 \1 표기법을 사용하여 역참조를 나타낼 수 없습니다. 예를 들어, \11은 preg_replace()가 \1 뒤에 숫자 1이 오는 역참조를 원하는지 \11의 역참조를 원하는지 불분명하게 만듭니다. 이 경우 해결책은 ${1}1을 사용하는 것입니다. 이렇게 하면 $1에 대한 격리된 역참조가 생성되고 나머지 1은 리터럴로 남습니다.
일치하는 항목이 있으면 대체된 제목이 반환되고, 그렇지 않으면 원래 제목이 변경되지 않고 반환됩니다.
preg_replace()의 각 매개변수(제한 제외)는 배열이 될 수 있습니다. 패턴과 교체가 모두 배열인 경우 키가 배열에 나타나는 순서대로 처리됩니다. 이는 인덱스의 숫자 순서와 반드시 동일할 필요는 없습니다. 어떤 패턴이 어떤 교체로 바뀔지 식별하기 위해 인덱스를 사용하는 경우 preg_replace()를 호출하기 전에 ksort()를 사용하여 배열을 정렬해야 합니다.
주제가 배열인 경우 제목의 각 항목에 대해 검색 및 바꾸기가 수행되고 배열이 반환됩니다.
pattern과 replacement가 모두 배열인 경우 preg_replace()는 주제를 검색하고 바꾸기 위해 해당 배열에서 값을 가져옵니다. 패턴보다 대체할 값이 적을 경우 빈 문자열을 나머지 대체값으로 사용합니다. 패턴이 배열이고 교체가 문자열인 경우 이 문자열은 패턴의 각 값에 대한 대체 값으로 사용됩니다. 그 반대는 의미가 없습니다.
/e 수정자는 preg_replace()가 대체 인수를 PHP 코드로 처리하도록 합니다(적절한 역참조가 대체된 후). 팁: 교체가 유효한 PHP 코드 문자열을 형성하는지 확인하십시오. 그렇지 않으면 PHP는 preg_replace()가 포함된 행에서 구문 분석 오류를 보고합니다.
참고: PHP 4.0.1pl2 이후에 한계 매개변수가 추가되었습니다.
문자열뿐만 아니라 배열도 처리할 수 있고 역참조 기능이 매우 유연하다는 점이 강점이라고 생각합니다. 기본적으로 일반 사용자의 요구 사항 대부분을 충족할 수 있지만, 능숙하지 않은 경우 고급 요구 사항에 맞게 콜백 기능을 사용자 정의할 수 있는 preg_replace_callback() 함수도 있습니다. 필터 설계 등
preg_replace_callback
(PHP 4 >= 4.0.5, PHP 5)
preg_replace_callback -- 콜백 함수를 사용하여 정규식 검색 및 교체를 수행합니다.
설명
mixed preg_replace_callback( 혼합 패턴, 콜백 callback, mix subject [, intlimit] )
이 함수의 동작은 대체 매개변수를 제공하는 대신 콜백 함수가 지정된다는 점을 제외하면 preg_replace()와 거의 동일합니다. 이 함수는 대상 문자열에서 일치하는 배열을 입력으로 사용하고 대체에 사용되는 문자열을 반환합니다.
예제 1. preg_replace_callback() 예
// 이 텍스트는 2002년용입니다.
// 이제 2003년용으로 만들고 싶습니다.
$text = "April 바보의 날은 2002년 4월 1일입니다.";
$text.= "마지막 크리스마스는 2001년 12월 24일입니다.";
// 콜백 함수
function next_year($matches) {
// 일반적으로: $matches[0]은 완전한 일치입니다.
// $matches[1]은 괄호 안의 첫 번째 하위 패턴과 일치합니다.
// 등등
return $ match[1]입니다. ($matches[2] 1);
}
echo preg_replace_callback(
"|(d{2}/d{2}/)(d{4})|",
"다음_연도 ",
$text);
// 결과는 다음과 같습니다.
// 만우절은 04/01/2003
// 마지막 크리스마스는 1 2/24/2002
? >
preg_replace_callback()에 대한 콜백 함수가 한 곳에서만 필요한 경우가 많습니다. 이 경우 create_function()을 사용하여 preg_replace_callback() 호출 내에서 콜백으로 선언할 수 있습니다. 이렇게 하면 호출에 대한 모든 정보를 한 곳에서 얻을 수 있으며 다른 곳에서는 사용되지 않는 콜백 함수 이름으로 함수 네임스페이스를 어수선하게 만들지 않습니다.
preg_replace_callback() 함수를 사용하는 친구의 경우 콜백의 필요성에 응답해야 합니다. 함수(그렇지 않으면 왜 사용하는지, preg_replace를 직접 사용하는 것이 더 좋지 않을까) 하지만 한 곳에서만 사용되는 경우가 많습니다. 이 경우 create_function()을 사용하여 익명 함수를 preg_replace_callback()의 콜백 함수로 선언할 수 있습니다. 이런 방식으로 우리는 다시 사용되지 않을 함수 이름으로 인해 혼동되지 않고 정보를 선언해야 하는 필요성을 충족합니다.
예제 2. preg_replace_callback() 및 create_function()
/* 각 단락 시작 부분의
*를 대문자에서 소문자로 변환하는 UNIX 스타일 명령줄 필터 */
$fp = fopen("php://stdin", "r") or die("표준 입력을 읽을 수 없습니다")
while (!feof($fp)) {
$line = fgets($fp);
$line = preg_replace_callback(
'|

s*w|',
create_function(
따옴표가 핵심입니다. $line
) ;
echo $line;
}
fclose($fp)
?> = 3.0.9, PHP 4, PHP 5)
preg_split -- 정규식을 사용하여 문자열 분할
자세한 내용은 없습니다.
설명
array preg_split ( 문자열 패턴, 문자열 주제 [, int 제한 [, int 플래그]] )
패턴과 일치하는 경계를 따라 분할된 주제의 하위 문자열을 포함하는 배열을 반환합니다.
limit가 지정되면 최대 제한 하위 문자열이 반환됩니다. 제한이 -1이면 제한이 없으며 선택적 매개변수 플래그를 계속 지정하는 데 사용할 수 있습니다.
플래그는 다음 플래그의 조합일 수 있습니다(비트 OR 연산자 | 와 결합).
PREG_SPLIT_NO_EMPTY
이 플래그가 설정된 경우 preg_split()은 비어 있지 않은 구성 요소만 반환합니다.
PREG_SPLIT_DELIM_CAPTURE
이 플래그가 설정되면 구분 기호 패턴의 대괄호 표현식도 캡처되어 반환됩니다. 이 태그는 PHP 4.0.5에서 추가되었습니다.
PREG_SPLIT_OFFSET_CAPTURE
이 플래그가 설정되면 일치하는 각 결과의 관련 문자열 오프셋도 반환됩니다. 이는 반환된 배열의 값을 변경하여 배열의 각 셀도 배열이 되도록 합니다. 여기서 첫 번째 항목은 일치하는 문자열이고 두 번째 항목은 subject 내의 오프셋입니다. 이 태그는 PHP 4.3.0부터 사용할 수 있습니다.
팁: 정규식 기능이 필요하지 않은 경우,explosion() 또는 str_split()과 같은 더 빠르고 간단한 대체 함수를 사용하도록 선택할 수 있습니다.

위 내용은 프리티리듬 디어 마이 퓨처의 내용을 포함하여 프리티리듬 디어 마이 퓨처 PHP의 정규 처리 기능에 대한 요약 및 분석을 소개한 것입니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.