2015-05-18 3 views
0

У меня есть следующая строка:PHP: Заменить слова в строке

@c24-blue: #005ea8; @c24-green: #737948; 

Теперь я хочу, чтобы заменить определение @ c24-зеленого до #FFF.

Я попробовал его на:

$string = '@c24-blue: #005ea8; @c24-green: #737948;'; 
$string = preg_replace('/([@c24-green:]) (.*);/', '$1' . ' #fff;', $string); 

Результат должен быть:

@c24-blue: #005ea8; @c24-green: #fff; 

Есть ли решение, чтобы получить эту работу?

С уважением, Kai

ответ

1

Как насчет:

$string = preg_replace('/(@c24-green:)[^;]+/', '$1 #fff', $string); 
+0

Да, кажется, работает. thx – user3314010

1

Удалите строку "@c24-green:" из класса символов, должно работать ..

(@c24-green:) (.*); 
^  ^

$string = preg_replace('/(@c24-green:) (.*);/', '$1' . ' #fff;', $string); 

См DEMO

Edit: Если вы хотите сделать его родовое .. Вы можете использовать следующие:

(@[^:]*:) ([^;]*); 

См DEMO

+0

Для c24-green это работает, но как мне определить регулярное выражение, если оно также должно работать для c24-синего? Чем он возвращает только @ c24-blue: #fff; – user3314010

+0

Вы имеете в виду, что хотите сделать его общим или просто для 'c24-green' и' c24-blue'? –

+0

По крайней мере, он должен быть общим. – user3314010