Преобразования имен переменных в PHP

При получении данных извне в PHP (например $_POST и др.) − он преобразовывает их таким образом, что символы точки, пробела и левой квадратной скобки (включая несколько прочих) заменяются на нижнее подчеркивание _

Решением может служить подобная функция _fixed_name(), которая вернёт соответствующее преобразованное название.

/**
 * According to: 
 * http://ca.php.net/manual/en/language.variables.external.php#81080
 **/
function _fixed_name($name) {
    return str_replace(array(chr(32), chr(46), chr(91)/*, chr(128), chr(129), chr(130), chr(131), chr(132), chr(133), chr(134), chr(135), chr(136), chr(137), chr(138), chr(139), chr(140), chr(141), chr(142), chr(143), chr(144), chr(145), chr(146), chr(147), chr(148), chr(149), chr(150), chr(151), chr(152), chr(153), chr(154), chr(155), chr(156), chr(157), chr(158), chr(159)*/), '_', $name);
}

Это полезно, например, для такого кейса: когда вы передаете массив названий имен файлов и, отдельно, массив самих файлов, ключами которого являются их имена. В данном случае точки и пробелы в массиве имен файлов будут заменены на нижнее подчеркивание. Такая ситуация, например, возникла при использовании Mailin.

Для восстановления оригинальных значений имен или предотвращения подобного поведения PHP см. StackOverflow.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *