我在查询字符串中传递带有点的变量.Php正在用低于分数替换点.那么如何保留名称中包含点的变量名称
HTTP://localhost/sample.php此时就把one.txt存盘= ON&two.txt =上
sample.php
$ ret = $ _ REQUEST ['one.txt']; //不工作
Car*_*ima 27
PHP将变量名one.txt转换one_txt为的原因是因为点在变量名中无效.
有关更多详细信息,请查看PHP文档:
变量名称遵循与PHP中其他标签相同的规则.有效的变量名称以字母或下划线开头,后跟任意数量的字母,数字或下划线.作为正则表达式,它将表示为:'[a-zA-Z_\x7f-\xff] [a-zA-Z0-9_\x7f-\xff]*'
您可以考虑更改(.到_)和检查,$_REQUEST['one_txt']也可以使HTML表单传递有效的变量名称.
要跟进Michael Borgwardt的评论,这里是PHP文档中关于从外部源处理变量的文本:
输入变量名称中的点
通常,PHP在传递到脚本时不会更改变量的名称.但是,应该注意,点(句点,句号)不是PHP变量名中的有效字符.出于这个原因,看看它:
Run Code Online (Sandbox Code Playgroud)<?php $varname.ext; /* invalid variable name */ ?>现在,解析器看到的是一个名为$ varname的变量,后跟字符串连接运算符,后跟barestring(即不带引号的字符串,它与任何已知的密钥或保留字不匹配)'ext'.显然,这没有预期的结果.
因此,请务必注意PHP会自动使用下划线替换传入变量名中的任何点.
它确实是PHP特有的东西.
使用$ _SERVER ['QUERY_STRING']
$get = array();
foreach(explode('&', $_SERVER['QUERY_STRING']) as $part)
{
$part = explode('=', $part);
if($key = array_shift($part))
{
$get[ $key ] = implode('', $part);
}
}
print_r($get);
Run Code Online (Sandbox Code Playgroud)
示例数组的结果([one.txt] => on [two.txt] => on)
| 归档时间: |
|
| 查看次数: |
11955 次 |
| 最近记录: |