Кодировать строку для соответствия имени поля кодированной формы в массиве PHP POST

Имя поля формы поля «Моя HTML» выглядит примерно так:

name = "Some File name.pdf" 

Массив PHP POST выглядит примерно так (некоторые символы заменены на подчеркивание):

 array( "Some_File_name_pdf" => "on" ) 

Есть ли функция PHP, которую я могу использовать для преобразования строки имени файла точно так, как она появляется в массиве POST? Меня не интересует str_replace. Я хочу иметь возможность сделать это:

 $myfilename = $obj->getFileName(); // returns "Some File name.pdf" $result = isset($_POST[some_encoding_function($myfilename)]); 

Some_encoding_function должен взять строку типа «Some File name.pdf» и вернуть что-то вроде «Some_File_name_pdf»;

Согласно документации PHP :

Точки и пробелы в именах переменных преобразуются в символы подчеркивания.

Это потребует только тривиальной замены строки.
Однако, согласно комментарию на этой странице :

Полный список символов имени поля, которые PHP преобразует в _ (подчеркивание), следующий (а не только точка):
chr (32) () (пробел)
chr (46) (.) (точка)
chr (91) ([) (открытая квадратная скобка)
chr (128) – chr (159) (различные)

Если этот комментарий правильный, то вам должно быть хорошо идти с такой функцией, как

 function underscorify($s) { return preg_replace('/[ \.\[\x80-\x9F]/', '_', $s); } 

Обратите внимание, однако, что chr(128) - chr(159) неоднозначно, поскольку не упоминается, зависит ли это от кодирования символов или нет.
Он может относиться ко всем символам ASCII от до Ÿ , он может относиться ко всем управляющим символам UTF-8 с \u0080\u009F или может быть просто жестко запрограммирован на байтовое значение для b >= 128 && b <= 159 ,