Как удалить символы от начала строки до определенного символа?

Как удалить символы от начала строки до определенного символа на PHP?
Чтобы от подобных: 83-smartfony, 59-planshety, 94-noutbuki осталось только smartfony, noutbuki, planshety. Пытался через str_replace('^(.*)/(\d+)-', '', $word);, не получилось.


Ответы (2 шт):

Автор решения: Wiktor Stribiżew

Функция str_replace не поддерживает регулярные выражения в качастве аргумента $search. Используйте preg_replace.

Если надо удалить всё до первой буквы, можно использовать

$string = preg_replace('~^\P{L}+~u', '', $string);

Тут ^\P{L}+ находит начало строки (^) и затем одну и более (+) символов, отличных от букв (\P{L}).

См. пример работы регулярного выражения.

См. пример кода на PHP:

$strs= ["83-smartfony","59-planshety","94-noutbuki"];
foreach ($strs as $string){
    echo preg_replace('~^\P{L}+~u', '', $string) . PHP_EOL;
}
// => smartfony
//    planshety
//    noutbuki

Если нужно удалить цифры и знак дефиса в начале строки, используйте

$string = preg_replace('~^\d+-~', '', $string);

См. пример работы этого регулярного выражения.

→ Ссылка
Автор решения: PotroNik

Если есть символ разделитель, то лучше использовать вызов функции explode

print_r(explode('-','55-fsfsdgs',2));

Вернет

Array
(
    [0] => 55
    [1] => fsfsdgs
)

Более подробно можно прочитать тут: www.php.net

→ Ссылка