Почему бы не использовать escape () и unescape (), которые по существу заменяют всех злых персонажей на безопасных.Аналогично функции escape () в JavaScript.
( РЕДАКТИРОВАТЬ ) Я исправлен, в дополнение к escape, вам все равно придется заменить символы косой черты и звездочки (/ *), а также любые другие недопустимые символы, как вы указалииз.
Из любопытства, почему бы просто не написать отдельный текстовый файл с URL-адресом в нем и назвать его так же, как ваше изображение?Или даже использовать базу данных?Это должно гарантировать, что вы никогда не получите сумасшедший длинный URL, превышающий максимальный предел имени файла, и вам не придется беспокоиться об экранировании / преобразовании символов.