Я пытаюсь удалить не RFC символы после фильтрации URL-адреса другими методами.Этот метод ломается:
$query = 'www.example.com_-.su_-.1Mk8ij_-.www.cs.cmu.edu_-.~mjw_-.recipes_-.cheese_-.cheese-garlic-biscuits.html';
$query = preg_replace('/([^a-zA-Z0-9._-])/e', 'sprintf("_-%2.2x", ord($1))', $query);
Возвращается ошибка:
Failed evaluating code: \nsprintf("_-%2.2x", ord(~))
Она ломается и на других примерах, и я не могу понять почему.Кто-нибудь может указать мне правильное направление?