Вы хотите заменить все эти символы пустой строкой, поэтому удалите ее. Вы должны использовать регулярное выражение немного иначе.
preg_replace('/[0-9!<>,;?=+()@#"°{}_$%:¤|]/u', '', "foobar_123123_&90481");
https://3v4l.org/RUk4Z
Объяснение: с ^ вы говорите, что строка должна начинаться с одного из этих символов . С $ вы говорите, что он должен заканчиваться одним из этих символов. С помощью * вы говорите 0 или более символов этого типа.
Но все, что вам нужно, это заменить каждый символ, который соответствует пустой строке, поэтому вам не нужны эти ^, $ and *
модификаторы / ограничители.