• php学习笔记——12年2月16日开始不断更新


    1.   include_once的一个赋值方式

    idc.php文件里这么写:

    return array(
     'default'=>array(
     'IP_dir1'=>'192.168.1.1',
     'IP_dir2'=>'192.168.1.2',
     'IP_dir3'=>'192.168.1.3')
    );

    index.php文件里这么写:

    define("DIR",str_replace("","/",dirname(__FILE__)));

    $ips = include_once(DIR . "/idc.php");

    print_r($ips);

    输出结果:

    Array ( [default] => Array ( [IP_dir1] => 192.168.1.1 [IP_dir2] => 192.168.1.2 [IP_dir3] => 192.168.1.3 ) )

    2.   PHP中字符串处理函数:strpos()

      定义和用法

      strpos() 函数返回字符串在另一个字符串中第一次出现的位置。

      如果没有找到该字符串,则返回 false。

      如果查找的字符在字符串首位,则返回与false等同的 0 ,在判断返回时应用“===”作为判断运算符

      语法

      strpos(string,find,start)

    参数描述
    string 必需。规定被搜索的字符串。
    find 必需。规定要查找的字符。
    start 可选。规定开始搜索的位置。

      

       例子

      <?php
        echo strpos("Hello world!","wo");
      ?>

      输出:

      6

    3.  strripos() 函数

      定义和用法

      strripos() 函数查找字符串在另一个字符串中最后一次出现的位置。

      如果成功,则返回位置,否则返回 false。

      语法

      strrpos(string,find,start)
    
    参数描述
    string 必需。规定被搜索的字符串。
    find 必需。规定要查找的字符。
    start 可选。规定开始搜索的位置。
     
      提示和注释
     

      注释:该函数对大小写不敏感。如需进行大小写敏感的查找,请使用 strrpos()

      例子

      <?php
        echo strripos("Hello world!","WO");
      ?>

      输出:

      6
    4. PHP json_encode() 函数介绍
      在 php 中使用 json_encode() 内置函数(php > 5.2)可以使用得 php 中数据可以与其它语言很好的传递并且使用它。这个函数的功能是将数值转换成json数据存储格式。  
    <?php
          $arr = array
          (
              'Name'=>'希亚',
              'Age'=>20
           );
    
        $jsonencode = json_encode($arr);
        echo $jsonencode;
    ?>

      程序运行结果如下:

    {"Name":null,"Age":20}

      json_encode 函数中中文被编码成 null 了,Google 了一下,很简单,为了与前端紧密结合,Json 只支持 utf-8 编码,我认为是前端的 Javascript 也是 utf-8 的原因。  

    <?php
    $array = array
        (
             'title'=>iconv('gb2312','utf-8','这里是中文标题'),
            'body'=>'abcd...'
        );
    
    echo json_encode($array);
    ?>

      这个程序的运行结果为:  

    {"title":"\u8fd9\u91cc\u662f\u4e2d\u6587\u6807\u9898","body":"abcd..."}

      数组中所有中文在json_encode之后都不见了或者出现\u2353等。

    解决方法是用urlencode()函数处理以下,在json_encode之前,把所有数组内所有内容都用urlencode()处理一下,然用json_encode()转换成json字符串,最后再用urldecode()将编码过的中文转回来。   

    <?php
    /**************************************************************
     *
     *    使用特定function对数组中所有元素做处理
     *    @param    string    &$array        要处理的字符串
     *    @param    string    $function    要执行的函数
     *    @return boolean    $apply_to_keys_also        是否也应用到key上
     *    @access public
     *
     *************************************************************/
    function arrayRecursive(&$array, $function, $apply_to_keys_also = false)
    {
        static $recursive_counter = 0;
        if (++$recursive_counter > 1000) {
            die('possible deep recursion attack');
        }
        foreach ($array as $key => $value) {
            if (is_array($value)) {
                arrayRecursive($array[$key], $function, $apply_to_keys_also);
            } else {
                $array[$key] = $function($value);
            }
     
            if ($apply_to_keys_also && is_string($key)) {
                $new_key = $function($key);
                if ($new_key != $key) {
                    $array[$new_key] = $array[$key];
                    unset($array[$key]);
                }
            }
        }
        $recursive_counter--;
    }
     
    /**************************************************************
     *
     *    将数组转换为JSON字符串(兼容中文)
     *    @param    array    $array        要转换的数组
     *    @return string        转换得到的json字符串
     *    @access public
     *
     *************************************************************/
    function JSON($array) {
        arrayRecursive($array, 'urlencode', true);
        $json = json_encode($array);
        return urldecode($json);
    }
    
    $array = array
           (
              'Name'=>'希亚',
              'Age'=>20
           );
    
    
    echo JSON($array);
    ?>

      这次成功了,运行结果如下:  

    {"Name":"希亚","Age":"20"}

     5.   PHP路径中的路径常量

           DIRECTORY_SEPARATOR,在windows下解释为:“\”,在linux下解释为:“/”

  • 相关阅读:
    《Redis 设计与实现》读书笔记(四)
    《Redis 设计与实现》读书笔记(三)
    《Redis 设计与实现》读书笔记(二)
    《Redis 设计与实现》读书笔记(一)
    《Mysql技术内幕-InnoDB存储引擎》读书笔记 (一)
    Python调试工具
    记一次偶发的bug排查——redis-py-cluster库的bug
    苹果支付的这些漏洞,你都堵上了吗?
    微软消息队列-MicroSoft Message Queue(MSMQ)队列的C#使用
    Quartz.net设置任务中同时最多运行一个实例 [DisallowConcurrentExecution]
  • 原文地址:https://www.cnblogs.com/shary/p/2354430.html
Copyright © 2020-2023  润新知