구분 기호는 영숫자 또는 백슬래시 및 preg_match일 수 없습니다.
코드는 다음과 같습니다.
$string1 = "My name is 'Kate' and im fine";
$pattern = "My name is '(.*)' and im fine";
preg_match($pattern , $string1, $matches);
echo $matches[1];
실행 시 다음 오류가 반환됩니다.
경고: preg_match() [function.preg-match]:구분 기호는 영숫자 또는 백슬래시일 수 없습니다.
패턴에 대한 구분 기호가 필요합니다.다음과 같이 패턴의 시작과 끝에 추가해야 합니다.
$pattern = "/My name is '(.*)' and im fine/"; // With / as a delimeter
해결책(최소한 제가 이 글을 쓸 당시에는 다른 답변에서 언급되지 않았습니다)은 PHP가 구분자를 참조할 때 코드 내에서 볼 수 있는 구분자(따옴표)가 아니라 문자열 내의 다음 문자를 참조하는 것입니다(사실 이 내용은 문서 어디에서도 본 적이 없습니다).예를 들어주세요.)따라서 다른 많은 언어에서 익숙한 것과 같은 정규 표현 구문을 사용하는 대신 다음과 같이 하십시오.
/something/
PHP는 문자열을 사용한 다음 문자열 내에서 다른 구분 기호를 찾습니다.
'/something/'
PHP가 참조하는 딜리미터는, 다음의 쌍입니다./한 쌍의 문자가 아닌'성격.그래서 당신이 글을 쓴다면'something', PHP는s영숫자를 구분 기호로 사용할 수 없다고 불평합니다.
(예를 들어) 패스하고 싶은 경우i대소문자를 구분하여 일치하는 것을 나타내려면 문자열 안쪽에 전달하고 regex 딜리미터를 벗어납니다.
'/something/i'
다른 것을 사용하고 싶은 경우/예를 들어 URL과 일치하고 모든 슬래시를 이스케이프하지 않아도 되는 경우 등 딜리미터로 사용할 수 있습니다.
'~something~'
식에 구분 기호를 지정해야 합니다.딜리미터는 식 시작과 끝 부분에 사용되는 특수 문자입니다.이를 통해 수식자와 인터프리터를 사용하여 어떤 것이 식이고 어떤 것이 수식인지 알 수 있습니다.오류 메시지에 나타나 있듯이 백슬래시는 이스케이프 문자이므로 딜리미터는 백슬래시가 될 수 없습니다.
$pattern = "/My name is '(.*)' and im fine/";
아래는 같은 예이지만,i대소문자를 구분하지 않고 일치시키는 수식자.
$pattern = "/My name is '(.*)' and im fine/i";
보다시피i는 슬래시 밖에 있기 때문에 수식어로 해석됩니다.
또한 슬래시 문자(/)를 딜리미터로 사용할 경우 정규 표현에서 /가 더 이상 사용되지 않도록 해야 합니다(있는 경우).
패턴에는 구분 기호가 있어야 합니다.딜리미터는 슬래시(/) 또는 영숫자가 아닌 임의의 문자(#,$*,...)를 사용할 수 있습니다.예:
$pattern = "/My name is '(.*)' and im fine/";
$pattern = "#My name is '(.*)' and im fine#";
$pattern = "@My name is '(.*)' and im fine@";
자동 구분 기호가 있는 T-Regx 라이브러리를 사용할 수도 있습니다.
$matches = pattern("My name is '(.*)' and im fine")->match($string1)->all();
// ↑ No delimiters needed
원래 코드 예시와 관련이 없는 것 같습니다만, 「Delimiter는 영숫자 또는 백슬래시가 아니어야 합니다」라고 하는 에러가 표시되고, 여기서 구글이 표시됩니다.이유:preg_match 파라미터의 순서를 혼재시켰습니다.패턴은 두 번째 파라미터이고 일치하는 문자열은 첫 번째 파라미터입니다.주의:)
이걸로 시험해 보세요
$pattern = "/My name is '\(.*\)' and im fine/";
언급URL : https://stackoverflow.com/questions/7660545/delimiter-must-not-be-alphanumeric-or-backslash-and-preg-match
'source' 카테고리의 다른 글
| MySQL 시스템 테이블을 최신 버전에서 InnoDB로 변환할 수 있습니까? (0) | 2023.01.15 |
|---|---|
| String, String Buffer 및 String Builder (0) | 2023.01.15 |
| 이 연결은 현재 {tls_version}을(를) 사용하고 있으며 Linux에서 Flask 애플리케이션을 배포할 수 없습니다. (0) | 2023.01.15 |
| 사용자 이름을 검증하는 정규 표현 (0) | 2023.01.15 |
| @Autowired - 종속성에 적합한 빈 유형을 찾을 수 없습니다. (0) | 2023.01.06 |