我的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”的内容;
答案 0 :(得分:2)
变量名中的点和空格将转换为下划线。
这只需要一个简单的字符串替换 但是,根据a comment on that page:
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字符,它可以引用\u0080
- \u009F
中的所有UTF-8控制字符,或者它可能只是硬编码为检查b >= 128 && b <= 159
的字节值。