PHP 정규 표현 식 교체 에 대한 자세 한 설명(PHP pregreplace,PHP preg_replace)

PHP 정규 표현 식 교체 실현 은 어 떻 습 니까?우선 PHP preg 를 소개 해 드 리 겠 습 니 다.replace,PHP preg_replace 의 사용 은 우리 가 실현 하 는 방법 입 니 다.그러면 PHP 정규 표현 식 교체 실현 과정 에 대해 서 는 인 스 턴 스 부터 시작 합 니 다.
PHP 정규 표현 식 교체 에 대한 개념:
preg_replace:정규 표현 식 의 검색 과 바 꾸 기 를 실행 합 니 다.

mixed preg_replace (  
mixed pattern,  
mixed replacement,  
mixed subject [, int limit]) 
preg_replace:정 의 된 정규 표현 식 과 일치 하 는 문자열 을 바 꿀 수 있 습 니 다.
간단 한 주석 제거 기능:
preg_replace('[(/*)+.+(*/)]', '', $val);
이 코드 는 PHP 와 CSS 에서/*주석*/형식의 다 중 주석 을 제거 할 수 있 습 니 다.이 중 세 개의 매개 변 수 는 정규 표현 식 으로 바 꿀 문자열 과 바 꿀 대상 문자열 입 니 다.2 차 규칙 과 일치 하려 면$0 을 사용 하여 모든 일치,$1,$2 등 을 의미 하 며,이 를 통 해 각각 2 차 규칙 을 유추 할 수 있 습 니 다.
subject 에서 pattern 모드 의 일치 항목 을 검색 하고 replacement 으로 바 꿉 니 다.limit 이 지정 되면 limit 개 만 바 꾸 고 limit 을 생략 하거나 값 이-1 이면 모든 일치 항목 이 바 뀝 니 다.
replacement 은//n 형식 이나(PHP 4.0.4 부터)$n 형식의 역방향 인용 을 포함 할 수 있 으 며 후 자 를 우선 사용 합 니 다.이 참조 마다 n 번 째 캡 처 된 괄호 안의 하위 모드 와 일치 하 는 텍스트 로 대 체 됩 니 다.n.0 에서 99 까지 가능 합 니 다.그 중에서/0 또는$0 은 전체 모델 에 일치 하 는 텍스트 를 말 합 니 다.왼쪽 괄호 를 왼쪽 에서 오른쪽으로 계수(1 부터)하여 하위 모드 의 수 를 얻 습 니 다.
교체 모드 가 역방향 참조 뒤에 숫자 가 이 어 질 때(즉,일치 하 는 패턴 뒤에 있 는 숫자)익숙 한//1 기 호 를 사용 하여 역방향 인용 을 표시 할 수 없습니다.예 를 들 어//11,pregreplace()는//1 의 역방향 인용 뒤에 숫자 1 을 따 르 는 지,아니면//11 의 역방향 인용 을 원 하 는 지 알 수 없습니다.이 예 에서 해결 방법 은/${1}1 을 사용 하 는 것 입 니 다.이것 은 격 리 된$1 역방향 인용 을 형성 하고 다른 1 은 단순 한 문자 일 뿐이다.
PHP 정규 표현 식 이 바 뀐 인 스 턴 스:
예 1.역방향 인용 뒤에 이 어 진 숫자의 용법

<?php 
$string = "April 15, 2003"; 
$pattern = "/(/w+) (/d+), (/d+)/i"; 
$replacement = "/${1}1,/$3"; 
print preg_replace($pattern, $replacement, $string); 
/* Output 
  ====== 
April1,2003 
*/ 
?>  
일치 하 는 항목 을 검색 하면 교 체 된 subject 를 되 돌려 줍 니 다.그렇지 않 으 면 변 하지 않 는 subject 로 돌아 갑 니 다.
preg_replace()의 모든 인자(limit 제외)는 하나의 배열 이 될 수 있 습 니 다.pattern 과 replacement 이 모두 배열 이 라면 키 이름 이 배열 에 나타 나 는 순서 로 처리 합 니 다.이것 은 반드시 색인 의 숫자 순서 와 같 지 않다.색인 을 사용 하여 어떤 pattern 이 어떤 replacement 으로 바 뀔 지 표시 하려 면 preg 를 호출 해 야 합 니 다.replace()전에 ksort()로 배열 을 정렬 합 니 다.
예 2.preg 에서replace()에서 색인 배열 사용 하기

<?php 
$string =  
"The quick brown fox jumped over the lazy dog."; 
$patterns[0] = "/quick/"; 
$patterns[1] = "/brown/"; 
$patterns[2] = "/fox/"; 
$replacements[2] = "bear"; 
$replacements[1] = "black"; 
$replacements[0] = "slow"; 
print preg_replace($patterns, $replacements, $string); 
/* Output 
  ====== 
The bear black slow jumped over the lazy dog. 
*/ 
/* By ksorting patterns and replacements, 
  we should get what we wanted. */ 
ksort($patterns); 
ksort($replacements); 
print preg_replace($patterns, $replacements, $string); 
/* Output 
  ====== 
The slow black bear jumped over the lazy dog. 
*/ 
?>  

subject 가 배열 이 라면 subject 의 모든 항목 을 검색 하고 교체 하 며 배열 을 되 돌려 줍 니 다.
pattern 과 replacement 이 모두 배열 이 라면 pregreplace()는 그 중에서 각각 값 을 꺼 내 subject 를 검색 하고 교체 합 니 다.replacement 의 값 이 pattern 보다 적 으 면 빈 문자열 로 남 은 값 을 바 꿉 니 다.pattern 이 배열 이 고 replacement 이 문자열 이 라면 pattern 의 모든 값 을 이 문자열 로 대체 합 니 다.반대로 의미 가 없다.
/e 수정자 pregreplace()는 replacement 인 자 를 PHP 코드 로 사용 합 니 다.알림:replacement 이 합 법 적 인 PHP 코드 문자열 을 구성 하 는 지 확인 하 십시오.그렇지 않 으 면 PHP 는 preg 를 포함 하고 있 습 니 다.replace()줄 에 문법 해석 오류 가 발생 했 습 니 다.
예 3.여러 개의 값 을 교체 합 니 다.

<?php 
$patterns = array  
("/(19|20)(/d{2})-(/d{1,2})-(/d{1,2})/", 
          "/^/s*{(/w+)}/s*=/"); 
$replace = array  
("//3///4///1//2", "$//1 ="); 
print preg_replace  
($patterns, $replace, "{startDate} = 1999-5-27"); 
?> 
이 예 는 출력 합 니 다:
$startDate = 5/27/1999
예 4./e 수정자 사용

<?php 
preg_replace  
("/(<//?)(/w+)([^>]*>)/e", 
"'//1'.strtoupper('//2').'//3'", 
$html_body); 
?> 
이것 은 입력 문자열 의 모든 HTML 표 시 를 대문자 로 바 꿉 니 다.이상 의 인 스 턴 스 실행 지원 버 전 은 PHP 3>=3.0.9,PHP 4 입 니 다.
PHP 정규 표현 식 교체 에 관 한 내용 은 여기까지 소개 합 니 다.PHP 정규 표현 식 교 체 를 이해 하고 파악 하 는 데 도움 이 되 기 를 바 랍 니 다.
정규 표현 식 으로 내용 php 바 꾸 기
예전 에 한 항목 을 만 들 었 는데 바로 문답 페이지 가 있 었 다.예 를 들 어 대답 이나 질문 의 내용 에 표정 을 삽입 하 는 것 이다.내용 에 적 힌 것 은 이모 티 콘 의 이름(접미사 가 없 는 것,예 를 들 어 f002.png)이모 티 콘 을 항목 에 넣 고 내용 을 지 울 때 이모 티 콘 이름 을 그림 으로 바 꿔 야 합 니 다.
데이터베이스 에 저 장 된 내용 은 다음 과 같 습 니 다.   모르다013]    (맨 뒤에 이거[f013]이모 티 콘 을 데이터베이스 에 저장 하 는 형식)
내 가 해 야 할 일 은 데이터베이스 에서 내용 을 꺼 내 고 내용 중의 이런 문자[f]를013]그림 주소 로 처리 합 니 다.정규 표현 식 이 필요 한 것 이 분명 합 니 다.
1.우선 이 문자열 을 찾 아야 합 니 다.
$rule = "/(?:\[)(f_.[0-9]{1,3})(?:\])/i";
이 정규 는 표정 을 찾 아 줄 문자열 과 일치 합 니 다.
2.이 문자열 을 이모 티 콘 그림 에 저 장 된 주소 로 바 꾸 었 습 니 다.함수 가 정규 표현 식 으로 바 뀌 었 습 니 다.
바로 이 함수:pregmatch_all
echo preg_replace("/(?:\[)(f_.[0-9]{1,3})(?:\])/i","",$line['content']);
$line['content']   이것 은 내 가 데이터베이스 에서 꺼 낸 내용 인 데,
""  이것 은 제 가 바 꿀 그림 주소 입 니 다.예 를 들 어 제 그림 주 소 는 이 렇 습 니 다.
이 안 에는 매우 중요 한 지식 이 하나 있다."\${1}"   데이터베이스 에 저 장 된 이모 티 콘 문자열 입 니 다.
\${1} = f_013
나 에 게 는 내 가 교체 한 전체 코드 가 있다.

<?php
$result = array();
   $n = preg_match_all("/(?:\[)(f_.[0-9]{1,3})(?:\])/i",$line['content'], $result); /*                */
   if($n == 0 || $n == false)  /*   0  false       */
   {
    echo $line['content'];
   }else
   {
     echo preg_replace("/(?:\[)(f_.[0-9]{1,3})(?:\])/i","<img src='__PUBLIC__/face/\${1}.png'>",$line['content']);
   }
   ?>

좋은 웹페이지 즐겨찾기