Замена условной строки PHP str_replace

Это строка, в которой я пытаюсь заменить пробелы между словами «-».

$mystring = "Color red, Color blue, Color black"; $newstring = str_replace(' ', '-', $mystring); 

Что я хочу достичь, используя функцию str_replace, является:

 "Color-red, Color-blue, Color-black"; 

Но это возвращает:

 "Color-red,-Color-blue,-Color-black"; 

Думаю, мне нужно условие, которое заменяет пробелы «не после запятой» или «между двумя словами». Но я понятия не имею. Любое предложение?

(?<!,)\s

Это использует отрицательный lookbehind для соответствия всем пробелам ( \s ), за которыми не следует a ,.

 preg_replace("/(?<!,)\s/", '-', $mystring); 

Играйте с регулярным выражением здесь .