Кажется, ваши данные в кодировке URL.Если вы примените urldecode
, вы получите
"first set" "second set" -drupal -wordpress
(я полагаю, у вас есть пробел до -drupal
).
Теперь вам нужно добавить +
.Опять же, я предполагаю, что вы должны добавить те слова перед всеми словами, которые не имеют -
и не заключены в кавычки:
$str = '"first set" "second set" -drupal -wordpress foo';
echo preg_replace('#( |^)(?!(?:\w+"|-| ))#','\1+', $str));
// prints +"first set" +"second set" -drupal -wordpress +foo
Обновление: Если вы не можете использовать1017 *, вы можете просто использовать str_replace
для замены %22
на "
.