@Stas1995

Как в регулярных выражениях php заменить только символ?

$str = '2*10*30 2x10x30';

$replace=  'R';

$pattern = array('/\d+(\*)/', '/\d+(x)/');

echo preg_filter($pattern, $replace, $str);

На выходе получаю
it is RR30 RR30

а должно получится:

2R10R30 2R10R30'
  • Вопрос задан
  • 61 просмотр
Пригласить эксперта
Ответы на вопрос 2
@Vitsliputsli
Зачем здесь регулярка?
str_replace(['*','x'],'R','2*10*30 2x10x30');

Регулярка будет выглядить так: /\*|x/

Если же, замена нужно только для конструкций из 3 чисел соединенных * или x, то можно написать так:
preg_filter('/(\d+)[*x](\d+)[*x](\d+)/', '${1}R${2}R${3}', '2*10*30 2x10x30')
Ответ написан
delphinpro
@delphinpro Куратор тега PHP
frontend developer
Так вы меняете всё что попадает под паттерн.
Чтобы сохранить отдельные части, следует заключить их в группу, и использовать подстановки

$string = preg_replace('/(\d+)[*x]/', '$1R', $string);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы