>백엔드 개발 >PHP 튜토리얼 >PHP를 사용하여 문자열에서 대괄호로 묶인 텍스트를 어떻게 추출할 수 있습니까?

PHP를 사용하여 문자열에서 대괄호로 묶인 텍스트를 어떻게 추출할 수 있습니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-26 20:29:10721검색

How Can I Extract Text Enclosed in Square Brackets from a String Using PHP?

PHP에서 대괄호 안의 텍스트 캡처

프로그래밍을 하다 보면 더 큰 문자열에서 특정 데이터를 추출해야 하는 경우가 종종 있습니다. 일반적인 시나리오 중 하나는 제공된 예에서 볼 수 있듯이 대괄호로 묶인 텍스트를 캡처하는 것입니다.

[This] is a [test] string, [eat] my [shorts].

목표는 이 문자열을 배열로 변환하는 것입니다.

[
  '[This]',
  '[test]',
  '[eat]',
  '[shorts]'
]

기본적인 /[.*?]/ 같은 정규식은 충분해 보일 수 있지만 대괄호의 첫 번째 인스턴스만 캡처합니다. 원하는 결과를 얻으려면 수정된 접근 방식이 필요합니다.

정규 표현식 솔루션:

preg_match_all을 수정된 정규 표현식과 함께 사용하면 내부의 모든 텍스트 항목과 일치시킬 수 있습니다. 대괄호. 다음 코드는 이를 수행합니다.

preg_match_all("/\[[^\]]*\]/", $text, $matches);
var_dump($matches[0]);

이 코드는 다음 정규식을 사용합니다.

  • /[/: 여는 대괄호와 일치합니다.
  • [^]]*: 닫는 사각형을 제외한 모든 문자와 일치합니다. Bracket.
  • /]/: 닫는 대괄호와 일치합니다.

대괄호 제거를 위한 대체 방법:

괄호 없이 텍스트를 추출하려면 정규식을 수정하면 됩니다. 약간:

preg_match_all("/\[([^\]]*)\]/", $text, $matches);
var_dump($matches[1]);

이 코드는 다음을 사용합니다.

  • /[/: 여는 대괄호와 일치합니다.
  • ( [^]]*): 닫는 사각형을 제외한 모든 문자를 캡처합니다. Bracket.
  • /]/: 닫는 대괄호와 일치합니다.

"*" 수량자를 사용하는 세 번째 옵션:

느리지만 대안으로 "*" 한정자를 사용하는 방법도 있습니다. "[^]":

preg_match_all("/\[(.*?)\]/", $text, $matches);
var_dump($matches[1]);

이러한 정규식을 사용하면 대괄호 안의 텍스트를 효과적으로 캡처하여 초기 문제 설명에 설명된 원하는 출력을 제공할 수 있습니다.

위 내용은 PHP를 사용하여 문자열에서 대괄호로 묶인 텍스트를 어떻게 추출할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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