Как насчет этого?
preg_match_all('/(\w+)\s*=\s*"((?:.*?\"?)*)"/', $parStr, $matches, PREG_SET_ORDER);
Дай мне вот так
[1] => link
[2] => <a href=\"http://test.com\">test.com</a>
Внутри [] все считается одним символом,
для [^\\"]
, это не значит EXCEPT \"
, его среднее значение EXCEPT \
И EXCEPT "
ОБНОВЛЕНИЕ для нескольких значений в одной строке
preg_match_all('/(\w+)\s*=\s*"((?:[^\\\]*?(?:\\\")?)*?)"/', $parStr, $matches, PREG_SET_ORDER);
Исходная строка, образец
$ parStr = 'title = "Мой маленький сайт"
год = "2007"
description = "Базовый сайт с ..."
tech = "PHP, mySQL" tech = "PHP, mySQL"
link = "http://test.com\">test.com" link =" http://test.com\">test.com" tech = "PHP, mySQL"
«;
Матчи
Array
(
[0] => Array
(
[0] => title="My Little Website"
[1] => title
[2] => My Little Website
)
[1] => Array
(
[0] => year="2007"
[1] => year
[2] => 2007
)
[2] => Array
(
[0] => description="Basic website with ..."
[1] => description
[2] => Basic website with ...
)
[3] => Array
(
[0] => tech="PHP, mySQL"
[1] => tech
[2] => PHP, mySQL
)
[4] => Array
(
[0] => tech="PHP, mySQL"
[1] => tech
[2] => PHP, mySQL
)
[5] => Array
(
[0] => link="<a href=\"http://test.com\">test.com</a>"
[1] => link
[2] => <a href=\"http://test.com\">test.com</a>
)
[6] => Array
(
[0] => link="<a href=\"http://test.com\">test.com</a>"
[1] => link
[2] => <a href=\"http://test.com\">test.com</a>
)
[7] => Array
(
[0] => tech="PHP, mySQL"
[1] => tech
[2] => PHP, mySQL
)
)
Лично я чувствую, что разбираю HTML с помощью регулярных выражений, не очень-то понравился, но я не вижу другого варианта, чтобы предложить вам, так что это просто быстрый и грязный способ. Для больших проектов или больших файлов я предлагаю вам найти настоящий парсер для этого.