zoukankan      html  css  js  c++  java
  • php单引号和双引号的区别与用法

      php里的单引号把内容当成纯文本,不会经过服务器翻译。而双引号则与此相反。里面的内容会经过服务器处理(process). 举个简单的例子:

     
    $foo="data";
    echo '$foo';                        //单引号输出$foo
    echo "$foo";                        //双引号输出data
     
     单引号不能处理变量和转义字符(除了\\和\'这两个),要输出下面的字符串
     
         what's my name?
     
    可以这么来写:
       
          echo "what's my name?";  //最简单的写法,单引号和双引号不产生冲突(conflict)
          echo 'what\' my name?';  用斜杠转义
       正如你所看到的,在单引号串中甚至反斜杠也失去了他的扩展含义(除了插入反斜杠\\和插入单引号\')。所以,当你想在字串中进行变量代换和包 含\n(换行符)等转义序列时,你应该使用双引号。单引号串可以用在其他任何地方,脚本中使用单引号串处理速度会更快些,因为PHP语法分析器对单引号串 的处理方式比较单纯,而双引号的处理由于串内部也需要解析,因此更复杂些,所以处理速度略慢
    写一个windows无效文件名替换函数。(windows文件名无效字符有9个:
    / 去掉文件名中的无效字符,如 \ / : * ? " < > | 
    function replaceBadChar($fileName)
    {
        // 去掉文件名中的无效字符,如 \ / : * ? " < > | 
        $fileName=str_replace('\\','_',$fileName);
        $fileName=str_replace('/','_',$fileName);
        $fileName=str_replace(':','_',$fileName);
        $fileName=str_replace('*','_',$fileName);
        $fileName=str_replace('?','_',$fileName);
        $fileName=str_replace('"','_',$fileName);
        $fileName=str_replace('<','_',$fileName);
        $fileName=str_replace('>','_',$fileName);
        $fileName=str_replace('|','_',$fileName);
        return $fileName;
    }
    $str='\/:*?"<>|';
    echo replaceBadChar($str);

    最开始我把他们都用反斜杠转义了,结果只输出前1个,因为只有反斜杠和单引号需要在单引号中转义,其他都不需要

    还有一点的是,str_replace只是简单的字符串替换,与正则无关,所以上面的改成双引号也是ok的

     
    如果要输出含有变量的字符串时就必须小心点,否则很可能产生错误。
       
         $email=$_POST['email'];
     
    现在要输出this is your  email $email;可以有两个方式
     
      echo "this is your email $email";  //双引号服务器会自动解析
      echo 'this is your email'.$email; //用连字符和纯字符串和变量链接起来
     
      一旦涉及到Mysql中的sql语句,就更得小心了。从简单说起,sql语句,其中的条件是常量
           
           SELECE *  FROM  email_table WHERE username="abc";
     
    php中可以写成
           $query="SELECE * FROM  email_table WHERE username='abc'";//query语句一定要用双引号括起来
     
    假设查询的条件是变量,如$abc=$_POST['username'];
    可以写成
                $query="SELECT * FROM email_table WHERE  username=' ".$abc." ' ";
     
    可以分成几步理解:
    1."SELECT * FROM email_table WHERE  username=' " 纯字符串
    2. .连接符,用来链接后面的字符
    3.$abc 显示变量的值
    4.." ' "连字符链接后面的单引号(为了与条件中的第一个单引号配对)
    其实不必这么复杂,可以这么写
    $query="SELECT * FROM email_table WHERE username='$abc' ";
    可以这么理解,双引号内部的全都要被服务器解析,单引号只是当成普通字符而已.
     
    再复杂一点
    $user=array (”name”=> $_REQUEST['user_name‘,"age"=>$_REQUEST['age'];//
    $abc=array("name"=>$_POST['username'],"age"=>$_POST['age']);
    $abc为数组变量,则写成
    $query="SELECT * FROM email_table WHERE username=' " .$abc["name"]." ' ";
     
          最后需要说明的是,很多人以为单引号不能包含双引号,这是错误的。就个简单的例子,输出html语句,
     
    echo ' <input type="text" name="email" id="email" /> '; 
       
       html包含很多的双引号使用,可以用单引号包含起来,是没有问题的 。双引号虽好,能包含变量和转义字符,但是效率比单引号低,能用单引号的尽量用单引号,不可忽略的是,要注意区分英文和中文引号(dreamweave包含字符串时会高亮显示,中文则不会)。
      单引号里面的双引号中的变量不会解析! 
     
    一.首先想想PHP里所有的单词(其实应该叫符号)有几类.

    1.PHP,mysql两方的关键词与函数.例如echo,print,mysql_connect等等.这些肯定不加引号的.

    2.常量.新手可能用得不多,常量的好处是全局性,穿透函数.速度也快些不过新手可以暂时不管常量这玩意儿.

    3.变量.前面带"$"号的就是变量.可以为变量设一个"值",例如一串字符,一个数字,逻辑(真/假)值等.也可以表示一组值(数组,对象等)

    4.值.通常要给常量与变量设置值.赋值语句$a=\'abc\'中,右边的\'abc\'即为值.

    5.函数的参数(在括号里的).可以是常量,变量,值三种.

    变量(常量)与值的关系正如下列各种情况.

    "颜色"与"红",

    "长度"与100,

    "日期"与2007年10月25号"

    二.什么情况下用PHP引号

    其实只有第4项"值"需要用到引号,函数的里也只有值要用引号.并且只有字符串(日期值可以当成字符串)内容需要用到引号.数字(可用可不用),真假(不能用)例外.

    例子

    三.单引号与双引号的区别

    一般情况下两者是通用的.但双引号内部变量会解析,单引号则不解析.

    例子

    所以如果内部只有纯字符串的时候,用单引号(速度快),内部有别的东西(如变量)的时候,用双号引更好点.

    四.字符串内部如果出现PHP引号怎么办--关于转义.

    比如我们想输出: 我"是\'天才

    这时候就必须用到转义了.转义即把本来有作用的符号转成无意义的字符.

    这样就正常了,因为号把它后面的任何字符都转成无意义的符号.在这里来说,PHP解析器根本没把号后面的引号当成引号来看待.

    同样的,还可以转义分号,$符号等特殊符号.

    五.字符串的连接.

    这是个麻烦的问题.一般来说,变量值,直接包含在双引号中就可以了.另外字符串的叠加用"."字符.

    在复杂的情况里可以用大括号来包含,PHP便知道这是一个完整的东西,里面的引号不会影响到外面的引号关系.

    与html的混合也很简单,最好养成HTML中全部用双引号,PHP中尽量用单引号的习惯.这样方便把大段的HTML代码复制过来,只要头尾加上单引号就是一个正确的字符串了.几百行的HTML代码也不用担心PHP引号错乱.

    总结一下PHP引号使用原则

    1.字符串的值用引号

    2.PHP中尽量用单引号,HTML代码全部用双引号

    3.在包含变量的时候,用双引号可以简化操作

    4.复杂的情况下用大括号包起来

    PHP引号还有一个用处就是,有的时候需要用php生成文本文件,换行符\n需要用双引号才能好使,单引号则会直接把\n当成字符输出。

     
  • 相关阅读:
    js参数自定义
    分页插件--记录
    .net mvc接收参数为null的解决方案
    c#枚举转字典或表格
    openlayers添加弹出框
    openlayers按坐标点播放
    openlayers轨迹匀速播放
    MyEclipse配置进行Hibernate逆映射
    BIO,NIO,AIO
    Git遇到的一点错误
  • 原文地址:https://www.cnblogs.com/youxin/p/2348551.html
Copyright © 2011-2022 走看看