2202435에서 해결책을 사용하고 있습니다. 그러나 문자열에 대괄호를 추가하면 배열에 올바른 결과가 제공되지 않습니다.PHP는 문자열을 폭발 시키지만 따옴표로 묶인 단어는 하나의 단어로 취급하고 대괄호는 무시합니다.
$text = 'Lorem ipsum ("dolor sit amet") consectetur "adipiscing \\"elit" dolor';
preg_match_all('/"(?:\\\\.|[^\\\\"])*"|\S+/', $text, $matches);
print_r($matches);
('위의 코드는
Array
(
[0] => Array
(
[0] => Lorem
[1] => ipsum
[2] => ("dolor
[3] => sit
[4] => amet")
[5] => consectetur
[6] => "adipiscing \"elit"
[7] => dolor
)
)
을 생산하지만 찾고 있어요 결과는 내가 뒤에 공백을 포함하는 경우, 위의 결과를 얻을 수 있어요
Array
(
[0] => Array
(
[0] => Lorem
[1] => ipsum
[2] => (
[3] => "dolor sit amet"
[4] =>)
[5] => consectetur
[6] => "adipiscing \"elit"
[7] => dolor
)
)
입니다 '앞에') '.
가능한 경우 설명이 포함 된 대괄호를 계속 사용할 수있는 올바른 정규 표현식을 알려주십시오.
감사합니다.
그 이유는 당신이'독립' "유지하기위한 것입니다 사용하는 정규식 일치하면 일치 할 수 있습니다. "/"(? : \\\\. | [^ \\\\ "]) *"| [^ \ s "] +/''도움이 될 것입니다 –
언 이스케이프 된 이중 따옴표는 입력 내용과 항상 쌍을 이루는가? –
@ WiktorStribiżew 고맙다. 당신의 해결책이 효과적이다. uble 따옴표는 데이터베이스를 질의하기위한 검색 문자열의 일부이므로 항상 쌍을 지어야합니다. 작은 따옴표 안에 단어를 큰 따옴표와 함께 한 단어로 포함 할 수 있습니까? –