На данный вопрос уже ответили:
Из такого текста "[id120080895|Лёша], привет!" я делаю такой "Леша, привет!" следующим кодом:
$txt = $result['text'];
$arrgumentstxt = array('[',']','|','id',1,2,3,4,5,6,7,8,9,0);
$formattxt = str_ireplace($arrgumentstxt, '', $txt);
echo $formattxt;
Однако если исходный текст в таком формате "[id120080895|Лёша], привет! Вот его номер +79789879878", то на выходе обрезается номер, и любые другие цифры.
Как обрезать именно [id120080895|Лёша], оставить имя, но ничего другого не трогать, например если в тексте будут находится цифры.
Второй ответ вам подойдет: https://ru.stackoverflow.com/a/851287/302920
$string = '[id120080895|Лёша], привет! Вот его номер +79789879878';
echo preg_replace('/\[id.*?\|(.*?)\]/', "$1", $string);
Сборка персонального компьютера от Artline: умный выбор для современных пользователей