<?php 'Test "test" test', "Test 'test' test", 'Test "test" "test"', "Test 'test' 'test'", "Test 'test' \"test\"", 'Test "te\\"st" test', "Test 'te\\'st' test", 'Test "te\'st" test', "Test 'te\"st' test", 'Test "te\'s\\"t" test', "Test 'te\"s\\'t' test", ); $pattern = '/(["\'])(?:(?!\1).|(?<=\\\\)\1)+\1/'; foreach($input as $str) { echo "Input: ", $str, "\n"; }
Standard input is empty
Input: Test "test" test
Array
(
[0] => Array
(
[0] => "test"
)
[1] => Array
(
[0] => "
)
)
Input: Test 'test' test
Array
(
[0] => Array
(
[0] => 'test'
)
[1] => Array
(
[0] => '
)
)
Input: Test "test" "test"
Array
(
[0] => Array
(
[0] => "test"
[1] => "test"
)
[1] => Array
(
[0] => "
[1] => "
)
)
Input: Test 'test' 'test'
Array
(
[0] => Array
(
[0] => 'test'
[1] => 'test'
)
[1] => Array
(
[0] => '
[1] => '
)
)
Input: Test 'test' "test"
Array
(
[0] => Array
(
[0] => 'test'
[1] => "test"
)
[1] => Array
(
[0] => '
[1] => "
)
)
Input: Test "te\"st" test
Array
(
[0] => Array
(
[0] => "te\"st"
)
[1] => Array
(
[0] => "
)
)
Input: Test 'te\'st' test
Array
(
[0] => Array
(
[0] => 'te\'st'
)
[1] => Array
(
[0] => '
)
)
Input: Test "te'st" test
Array
(
[0] => Array
(
[0] => "te'st"
)
[1] => Array
(
[0] => "
)
)
Input: Test 'te"st' test
Array
(
[0] => Array
(
[0] => 'te"st'
)
[1] => Array
(
[0] => '
)
)
Input: Test "te's\"t" test
Array
(
[0] => Array
(
[0] => "te's\"t"
)
[1] => Array
(
[0] => "
)
)
Input: Test 'te"s\'t' test
Array
(
[0] => Array
(
[0] => 'te"s\'t'
)
[1] => Array
(
[0] => '
)
)