首页 > 编程技术 > php

php中输出变量加大括号{}作用

发布时间:2016-11-25 15:03

在php中大括号{}我们常用的是类数组或条件判断了,但是在变量中用这种写法{$test}是什么使用呢,下面我来给大家介绍。

php输出变量加大括号,这是什么写法?看下面一段代码:

 代码如下 复制代码

<?php

header("Content-Type:text/html; charset=utf-8");

$test="1变量1";

//echo "前面有字符串aa ".$test." bb后面字符串";

echo "前面有字符串aa {$test} bb后面字符串";

?>


可以看出php输出变量加大括号同使用.运算符输出变量字符串效果是一样,总结出下面3点以帮助理解php输出变量加大括号{}的作用:

1. 表示{}里面的是一个变量  ,执行时按照变量来处理;
2. 在字符串中引用变量使用的特殊包括方式,这样就可以不使用.运算符,从而减少代码的输入量了;
3. 防止变量名和后面的字符串连在一起。

附:

字符串变量中大括号{}的作用:

PHP 变量后面加上一个大括号{},里面填上数字,就是指 PHP 变量相应序号对应的字符。

例如:

 代码如下 复制代码

$str = 'hello';
echo $str{0}; // 输出为 h
echo $str{1}; // 输出为 e

如果要检查某个字符串是否满足多少长度,可以考虑用这种大括号{} 加 isset 的方式替代 strlen 函数,因为 isset 是语言结构,strlen 是函数,所以使用 isset 比使用 strlen 效率更高。
比如判断一个字符串的长度是否小于 5:

 代码如下 复制代码

if ( !isset ( $str{5} ) ) 就比 if ( strlen ( $str ) < 5 ) 好。

在php中如果要判断浏览器类型操作方法很简单的,我们只要利用全局变量HTTP_USER_AGENT就可以获取用户浏览器信息,这样我们就可以利用正则加以判断类型或浏览器版本了。

PHP如何判断浏览器类型及浏览器语言因为浏览器在和服务器连接时候都会先发送一些包含自己信息的内容(浏览器类型、语言)。

这里我们主要分析的是_SERVER["HTTP_USER_AGENT"](浏览器类型)和_SERVER["HTTP_ACCEPT_LANGUAGE"](浏览器语言)。
我们所要做的就是把这些内容读出来,然后用strpos或者preg_match函数来对比就可以了。
判断浏览器类型:

 代码如下 复制代码

 <?php echo $_SERVER["HTTP_USER_AGENT"];?>

先给出PHP代码部分,有些不是很全,需要的朋友自己依葫芦画瓢自行添加去。(下面这个代码有个小错误,请将文章看完并自行修改)

 代码如下 复制代码

<?php
if(strpos($_SERVER["HTTP_USER_AGENT"],"MSIE 9.0"))
echo "Internet Explorer 9.0";
else if(strpos($_SERVER["HTTP_USER_AGENT"],"MSIE 8.0"))
echo "Internet Explorer 8.0";
else if(strpos($_SERVER["HTTP_USER_AGENT"],"MSIE 7.0"))
echo "Internet Explorer 7.0";
else if(strpos($_SERVER["HTTP_USER_AGENT"],"MSIE 6.0"))
echo "Internet Explorer 6.0";
else if(strpos($_SERVER["HTTP_USER_AGENT"],"Firefox"))
echo "Firefox";
else if(strpos($_SERVER["HTTP_USER_AGENT"],"Chrome"))
echo "Chrome";
else if(strpos($_SERVER["HTTP_USER_AGENT"],"Safari"))
echo "Safari";
else if(strpos($_SERVER["HTTP_USER_AGENT"],"Opera"))
echo "Opera";
else echo $_SERVER["HTTP_USER_AGENT"];
?>

打开opera浏览器,可以看到它的页面请求头信息如下:

Opera/9.80 (Windows NT 5.1; U; Edition IBIS; zh-cn) Presto/2.10.229 Version/11.61
但是 strpos($_SERVER["HTTP_USER_AGENT"],"Opera") 返回的值始终是“0”

解决方法比较也比较简单,

 代码如下 复制代码

else if(strpos($_SERVER["HTTP_USER_AGENT"],"Opera"))

替换成

else if(strpos($_SERVER["HTTP_USER_AGENT"],"pera"))

下面再补一个更强的可判断是浏览器用户还是seo/seo.html" target="_blank">搜索引擎

 代码如下 复制代码


function my_get_browser(){
 if(empty($_SERVER['HTTP_USER_AGENT'])){
  return '命令行,机器人来了!';
 }
 if(false!==strpos($_SERVER['HTTP_USER_AGENT'],'MSIE 9.0')){
  return 'Internet Explorer 9.0';
 }
 if(false!==strpos($_SERVER['HTTP_USER_AGENT'],'MSIE 8.0')){
  return 'Internet Explorer 8.0';
 }
 if(false!==strpos($_SERVER['HTTP_USER_AGENT'],'MSIE 7.0')){
  return 'Internet Explorer 7.0';
 }
 if(false!==strpos($_SERVER['HTTP_USER_AGENT'],'MSIE 6.0')){
  return 'Internet Explorer 6.0';
 }
 if(false!==strpos($_SERVER['HTTP_USER_AGENT'],'Firefox')){
  return 'Firefox';
 }
 if(false!==strpos($_SERVER['HTTP_USER_AGENT'],'Chrome')){
  return 'Chrome';
 }
 if(false!==strpos($_SERVER['HTTP_USER_AGENT'],'Safari')){
  return 'Safari';
 }
 if(false!==strpos($_SERVER['HTTP_USER_AGENT'],'Opera')){
  return 'Opera';
 }
 if(false!==strpos($_SERVER['HTTP_USER_AGENT'],'360SE')){
  return '360SE';
 }
}

可能很多的朋友都不知道php文件上传如果要做得安全又方便我们是需要配置php.ini中的一些关于文件上传参数的,下面我来给大家介绍一些常见的参数配置方法。

修改php.ini这个选项,网上有很多的教程,可以随便搜。
 
1、先用root账号,登录到nobody的账户。
2、然后用whereis php命令查看,php.ini所在的位置,修改这个php.ini的文件就可以了。
3、最后重启apache,就可以生效了。

这里的nobody账户就是apache使用的账户,权限很低。
这里主要注意的问题就是你修改的配置文件必须是nobody所使用的配置文件。
一般情况下,修改了配置但是没有生效,可以考虑一下机器上是不是有多份配置。

配置与文件上传有关的参数


所有这些参数都在php.ini中配置。

1.file_uploads
设为On,允许通过HTTP上传文件

2.upload_tmp_dir
文件上传至服务器时用于临时存储的目录,如果没指定,系统会使用默认的临时文件夹(我的机器是/tmp)。

3.upload_max_filesize
允许上传文件大小的最大值,默认为2M。

4.post_max_size
Php可接收的post数据的最大值(包括表单里的所有值的总合),默认为8M。

5.memory_limit
每个php所最占的最大内存数,这个值要大于允许上传的文件大小。

6.max_execution_time
每个php运行的最长时间(秒),默认30秒。

7.max_input_time
Php解析POST/GET数据的最长时间(秒),默认60秒。

inlcude带参数这个问题以前我没成功,今天看到一文章果断搞了了,如我可以这样include(\'a.php?site=www.111cn.net\')然后在调用a.php页面可直接$_GET[\'a\'];获取了。

具体方法详解


举例:假设在 index.php 中需要调用 inc.php?para=3 ,

inc.php

 代码如下 复制代码

<?php     echo $_GET['para']; ?>

下面的写法是无法得到正确结果的:

index.php

 代码如下 复制代码
<?php     include dirname(__FILE__).'/inc.php?para=3'; ?>

稍微变通一下,把$_GET变量在include之前定义,则可以正常运行:
index.php

 代码如下 复制代码
<?php     $_GET['para'] = 3     include dirname(__FILE__).'/inc.php; ?>

如果php.ini中开启了allow_url_include功能,则可以使用include url的方式:
index.php

 代码如下 复制代码

<?php     include 'http://www.yoururl.com/inc.php?para=3'; ?>

设置方法:php.ini中,找到如下行,改为On:

; Whether to allow include/require to open URLs (like http:// or ftp://) as files.
allow_url_include = On

不过为了保证安全性,大部分的服务器都将allow_url_include 功能关闭,那样就只能视情况而定了。

这是一个朋友在学php时的一个学习笔记,其功能就是设置cookie然后注销及输出cookie值的具体操作方法。

setcookie() 函数用于设置 cookie。

注释:setcookie() 函数必须位于 <html> 标签之前。

语法

setcookie(name, value, expire, path, domain);

下面看实例

 代码如下 复制代码


<?php
//注销cookie
if(isset($_GET['out'])){
setcookie('us',"");
echo "<script>location.href='index.php'</script>";
}

//设置cookie
if(isset($_POST['sub'])){
setcookie("us",$_POST['user'],time()+3600);
echo "<script>location.href='index.php'</script>";
}

//输出和注销cookie
if($_COOKIE['us']){
echo $_COOKIE['us'];
echo "<a href='index.php?out=out'>注销cookies</a>";
}

?>
<form method="post">
<input type="text" name="user">
<input type="password" name="pass">
<input type="submit" name="sub" value="提交">
</form>

标签:[!--infotagslink--]

您可能感兴趣的文章: