Один из способов сделать это - использовать регулярные выражения, вот пример кода (не протестирован).
$string = "ThreatName REG_SZ c:\\temp Protection
Code REG_SZ c:\\a Check
ThreatName REG_SZ c:\\windows Protection";
preg_match_all("~.* REG_SZ (.*) ~iU", $string, $matches);
print_r($matches);
Если вы хотите узнать больше, см. Руководство по php: preg_match_all () .Или Google регулярные выражения для получения дополнительной информации о них.Но в основном он выглядит между REG_SZ и Protection (модификатор U делает его несвязным, поэтому он будет искать первую Protection) и возвращает все, кроме символа новой строки (. *).Если это распространяется на новые строки, модификатор 's' поможет решить эту проблему.
РЕДАКТИРОВАТЬ: увидел, что вы хотели их всех.Это должно работать для всех них.
РЕДАКТИРОВАТЬ: Исправлено регулярное выражение для включения «ThreatName», не уверен, если это динамический.Также добавлены дополнительные косые черты в строку, поскольку они были проанализированы как символы.
Я не уверен, придется ли вам использовать addlashes () в строке или нет, но это может быть необходимо.
Удален isset, поскольку он не был необходим.
EDIT: изменил код, учитывая, что правильное форматирование вывода было опущено.Обновленный метод будет работать, но если в каталоге есть пробел, скорее всего, он будет тянуть только первую часть каталога.