>백엔드 개발 >PHP 튜토리얼 >이스케이프된 따옴표를 무시하고 PHP에서 따옴표 부분 문자열을 추출하려면 어떻게 해야 합니까?

이스케이프된 따옴표를 무시하고 PHP에서 따옴표 부분 문자열을 추출하려면 어떻게 해야 합니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-29 12:54:17774검색

How Can I Extract Quoted Substrings in PHP, Ignoring Escaped Quotes?

PHP Regex에서 이스케이프된 따옴표 제외

PHP에서 작은따옴표나 큰따옴표로 묶인 하위 문자열을 추출하려면 이스케이프 시퀀스에 세심한 주의가 필요합니다. 일치하는 문자열 내에서 이스케이프된 따옴표를 무시하려면 고급 정규식을 활용할 수 있습니다.

다음 코드를 고려하세요.

$code = preg_replace_callback('/"(.*?)"/', array(&$this, '_getPHPString'), $code);
$code = preg_replace_callback("#'(.*?)'#", array(&$this, '_getPHPString'), $code);

이 정규 표현식은 따옴표 사이의 하위 문자열과 일치하지만 이스케이프된 따옴표를 제외하지 못합니다. . 이 문제를 해결하기 위해 우리는 보다 포괄적인 정규식 패턴을 사용합니다:

권장 정규식:

  • 큰따옴표 하위 문자열:

    "[^"\\]*(?:\\.[^"\\]*)*"/s
  • 작은따옴표 하위 문자열:

    /'[^'\\]*(?:\\.[^'\\]*)*'/s

이 정규식은 다음을 허용합니다. 이스케이프된 문자를 포함하여 이스케이프되지 않은 모든 문자(예: "n" 및 "t") 및 이스케이프된 이스케이프 시퀀스("").

설명:

  • [^"\\]* 일치 0개 이상의 따옴표 또는 백슬래시가 아닌 문자.
  • (?:\\.[^"\\]*)*는 이스케이프된 문자와 일치합니다. 문자 뒤에 따옴표가 아닌 문자나 백슬래시 문자가 옵니다.
  • s 수정자는 여러 줄에 걸쳐 필요한 한 줄 일치를 가능하게 합니다.

이러한 정규 표현식을 통합하면 다음을 정확하게 추출할 수 있습니다. 인용된 문자열 내에 이스케이프 문자를 포함하는 하위 문자열.

위 내용은 이스케이프된 따옴표를 무시하고 PHP에서 따옴표 부분 문자열을 추출하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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