>백엔드 개발 >PHP 튜토리얼 >인용문을 유지하면서 문자열을 단어로 분할하는 방법은 무엇입니까?

인용문을 유지하면서 문자열을 단어로 분할하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-06 02:59:17977검색

How to Split a String into Words While Preserving Quoted Phrases?

문자열을 단어별로 분할하고 인용 텍스트를 유지하는 방법

주어진 문자열 "Lorem ipsum "dolor sit amet" consectetur "adipiscing elit " dolor", 우리는 인용된 문구의 무결성을 유지하면서 배열로 분해하는 방법을 모색합니다. 제공된 코드를 사용하면

$mytext = "Lorem ipsum %22dolor sit amet%22 consectetur %22adipiscing elit%22 dolor"
$noquotes = str_replace("%22", "", $mytext");
$newarray = explode(" ", $noquotes);

개별 단어가 분리됩니다. 이 문제를 해결하기 위해 우리는 정규식을 활용합니다.

$text = 'Lorem ipsum "dolor sit amet" consectetur "adipiscing \"elit" dolor';
preg_match_all('/"(?:\\.|[^\\"])*"|\S+/', $text, $matches);

이 정규식은 인용된 문자열이나 공백이 아닌 문자와 일치합니다. 인용된 문자열에는 이스케이프된 큰따옴표(")가 포함될 수 있으며 기술은 이를 수용합니다. 결과:

Array
(
    [0] => Array
        (
            [0] => Lorem
            [1] => ipsum
            [2] => "dolor sit amet"
            [3] => consectetur
            [4] => "adipiscing \"elit"
            [5] => dolor
        )

)

설명:

정규식은 다음과 같이 나눌 수 있습니다. 해당 구성요소:

  • `" # 큰따옴표 문자와 일치합니다. ("
  • (?: # 비캡처 그룹 1 시작
  • # 백슬래시 문자()
  • 와 일치합니다. # 줄 바꿈을 제외한 모든 문자와 일치
  • | # OR
  • 1 # 및 "
  • )*를 제외한 모든 문자와 일치 # 비캡처 그룹 1을 종료하고 0회 이상 반복
  • " # 큰따옴표 문자와 일치합니다("
  • | # 또는
  • S # 하나 이상의 공백이 아닌 문자와 일치

  1. "

위 내용은 인용문을 유지하면서 문자열을 단어로 분할하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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