Вот мое мнение.
$string = '"a-b""c-d""e-f"';
if ( preg_match_all( '/"(.*?)"/', $string, $matches ) )
{
print_r( $matches[1] );
}
И разбивка по шаблону
" // match a double quote
( // start a capture group
. // match any character
* // zero or more times
? // but do so in an ungreedy fashion
) // close the captured group
" // match a double quote
Причина, по которой вы смотрите в $matches[1]
, а не в $matches[0]
, заключается в том, что preg_match_all()
возвращает каждую захваченную группу в индексах 1-9, тогда как полное совпадение с шаблоном находится в индексе 0. Поскольку нам нужно только содержимое в захвате группа (в данном случае первая группа захвата), мы смотрим на $matches[1]
.