Angenommen, der Backslash ist das Escape-Zeichen für single quotes in single quotes:
<?php
$pattern = '
/
\'
(?:
\\\\{2} # treffe zwei Backslashes
|
\\\\. # oder einen Backslash und ein beliebiges Zeichen
|
[^\\\\] # oder ein Zeichen, das kein Backslash ist
)*?
\'
/sx';
$subject = "set('Hotel','Pension','Lodge','Ferienhaus','Ferienwohnung')";
$matches = array();
preg_match_all($pattern, $subject, $matches);
$tmp = $matches[0];
array_walk($tmp, function (&$s) {
$s = trim($s, '\'');
});
var_dump($tmp);
//array(5) {
// [0]=>
// string(5) "Hotel"
// [1]=>
// string(7) "Pension"
// [2]=>
// string(5) "Lodge"
// [3]=>
// string(10) "Ferienhaus"
// [4]=>
// string(13) "Ferienwohnung"
//}
Fallunterscheidung, ob es ein set() ist oder sonst was, dürfte ja hinzubekommen sein.