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

benny_benny

Новичок
Например, есть текст: "Memory: built-in 190M, extend TF card to 16GB max".

Можно ли в 1 строчку (1 функцией), например с помощью preg_replace, сделать замену на текст: "Встроенная память 190 Мбайт, расширяется картой MicroSD до 16 Гб" ?

Подскажите как?

То есть, чтобы текст "190" и "16" не включался в результат выполнения проверки по РВ.

Спасибо!
 

KorP

Новичок
benny_benny
Пишем регулярное выражение, которое будет захватывать числовые символы, и их заменяем на пустоту. Открыв хотя бы википедию, можно узнать что цифирки можно найти выражением \d+, ну а как это заставить работать в твоём случае ты уж сам потрудись подумать.
 

tXcode

Умный кодер
KorP
benny_benny

Я думаю в этом случае лучше искать регуляркой цифры + определенные буквы (т.е. создать несколько регулярный выражений(опять же смотря для чего тебе это нужно, если делать что-то типа разового перевода - то хорошо) и записывать их напрямую в шаблон или в переменную.

Ибо как я понимаю текст может быть разный и просто цифры искать не подойдет.

P.S. Я на одном крупном сайте медицинского оборудования делал подобный механизм....перелинковки используя словари (ибо менеджеры потихоньку описывали методы работы, запчасти и т.к.. Нужно было раз в неделю перебирать весь сайт алгоритмом).
 

KorP

Новичок
tXcode
чтобы текст "190" и "16" не включался в результат выполнения проверки по РВ
как задачу поставили, так и подсказали. у нас тут гадать на картах или кофейной гуще не принято
 

Ministr

Новичок
Можно так
PHP:
$string = 'Memory: built-in 190M, extend TF card to 16GB max';
$pattern = '/Memory: built-in (\d+)M, extend TF card to (\d+)GB max/i';
$replacement = 'Встроенная память $1 Мбайт, расширяется картой MicroSD до $2 Гб';
echo preg_replace($pattern, $replacement, $string);
Ещё можно так
PHP:
$string = 'Memory: built-in 190M, extend TF card to 16GB max';
$pattern = '/(\d+)/i';
preg_match_all($pattern, $string, $digits);
// print_r ($digits);
echo $new_string = 'Встроенная память '.$digits[0][0].' Мбайт, расширяется картой MicroSD до '.$digits[0][1].' Гб';
 
Сверху