PHP所有能力都是函数,内置1000多个函数,不是每一个函数都默认直接可以使用,有一些需要安装或者启用额外的“插件”扩展。

1,获取字符串长度

<?php
$str='hello';
echo strlen($str); //5

2,获取中文字符串(宽字符)的长度

  strlen 只能获取拉丁文的长度

  php中专门为宽字符集添加了一套API,所有的API 都是 mb_xxxx

echo mb_strlen('你好');

  但是报错:Fatal error: Uncaught Error: Call to undefined function mb_strlen() in              D:\www\site2\02, string.php:7 Stack trace: #0 {main} thrown in D:\www\site2\02, string.php on line 7

      这是因为这一套 API 不在内置的 1000+ 里面,而是在一个模块(php_mbstring.dll)中,模块成员必须通过配置文件载入模块过后再使用

   配置PHP扩展的步骤

  1,在PHP的安装目录去创建一个 php.ini ( 将PHP目录中的 php.ini-development 复制一个      修改为 php.ini )

  2, 修改扩展文件所在目录 extension_dir

  3,;extension=php  mbstring.dll  ,去掉注释( 修改文件中的部分选项      ; 是注释符)

  4,默认Apache加载的php.ini 是去 C:\ Windows目录找的

  5,可以通过Apache的配置文件修改默认加载路径 PHPIniDir

3,常见字符串API

①字符串截取

第一个参数:被截取的字符串

第二个参数:从哪个位置开始截

第三个参数:截取的字符个数

②字符串长度

③大小写转换

strtolower:大写转小写

strtoupper:小写转大写

④去除首尾空白字符

⑤查找字符串中某些字符首次出现位置

⑥字符串替换

  用 b 替换 a

⑦重复字符串

第一个参数:重复的字符串

第二个参数:重复多少次

⑧字符串分割

4,数组处理

php中的数组类型:索引数组、关联数组

php中定义数组的方式:array( )  、 [ ] (php 5.4+)

①获取关联数组中全部的键/值

  arrar_keys()   array_values()

<?php
$arr=array(
'hello' => '你好',
'pink' => '粉色',
'blue' => '蓝色',
);
var_dump(arrray_key($arr)); //['hello','pink','blue'];
var_dump(array_values($arr)); //['你好','粉色','蓝色'];

②判断数组中是否存在某个键

  array_key_exists()

<?php
$arr=array(
'hello' => '你好',
'pink' => '粉色',
'blue' => '蓝色',
);
var_dump(array_key_exists('hello',$arr)); //bool(true)
var_dump(array_key_exists('world',$arr)); //bool(false)

  isset也可判断数组中是否有指定的键

<?php
$arr=array(
'hello' => '你好',
'pink' => '粉色',
'blue' => '蓝色',
); if(isset($arr['hello'])){
echo $arr['hello']; //你好
}
else{
echo '没有';
}

  empty与isset相反,  empty($arr['foo'])  相当于   ! isset ( $arr [ 'foo' ] ) || $arr['foo'] == false

<?php
$arr=array(
'hello' => '你好',
'pink' => '粉色',
'blue' => '蓝色',
); if(empty($arr['foo'])){
echo '没有';
}
else{
echo $arr['foo'];
}

③去除重复的元素

  array_unique()

④将一个或多个元素追加到数组中

  array_push()

  $arr[ ] = 'new value'

$arr=Array('red' , 'orange' , 'yellow');
array_push($arr,'blue');
var_dump($arr);
$arr=Array('red' , 'orange' , 'yellow');
$arr[]='black';
var_dump($arr);

⑤删除数组中最后一个元素

  array_pop();

$arr=Array('red' , 'orange' , 'yellow');
array_pop($arr);
var_dump($arr);

⑥数组长度

  count()

$arr=Array('red' , 'orange' , 'yellow');
var_dump(count($arr));

⑦检测存在

  in_array()

$arr=Array('red' , 'orange' , 'yellow');
var_dump(in_array('red',$arr)); //true

5,时间处理

  ①时间戳:time()

    从 Unix纪元(格林威治时间 1970-01-01 00:00:00)到当前时间的毫秒数

<?php
echo time(); //1569216880

  ②格式化日期:date()

  格式化一个时间戳:

echo date('Y-m-d H:i:s', time());  //=date('Y-m-d H:i:s');

  第一个参数:一个时间格式

  第二个参数:一个时间戳,默认时间戳获取的就是格林威治时间

  问题:获取到的时间与当前时间相差8个小时

  解决:方式一,通过代码设置时区,更推荐这种方式   date_default_timezone_set('PRC');

     方式二:通过配置文件设置时区   date.timezone = PRC

 对已有事件做格式化:

  strtotime() 可以用来将一个有格式的时间字符串转换为一个时间戳

<?php
date_default_timezone_set('PRC');
$time='2019-09-23 11:34:58'; echo date('Y年m月d日 H:i:s',strtotime($time)); //2019年09月23日 11:34:58 echo date('Y年m月d日<b\r>H:i:s',strtotime($time)); // 2019年09月23日
:: echo date("Y年m月d日<b\r>H:i:s",strtotime($time)); //2019年09月23日11:34:58

    注意:单引号字符串的问题

    单引号:是对date函数的处理,单引号中的<b\r>可以换行

    双引号:是对字符串的处理,<b\r>不能换行

⑥PPH中的常量

  ①PHP 中可以通过 define 函数定义 一个常量

     ②常量的特点就是:定义后不能被修改,也是临时存放数据的容器

     ③ 什么时候用常量:一般程序的配置信息(不会在运行过程中修改)都会在常量中定义

④PHP中的常量的命名规则

    变量或函数都是采用 snake_case (小写字母加下划线)命名规则
常量是 SNAKE_CASE 命名规则
define('SYSTEM_NAME', '阿里百秀');
echo SYSTEM_NAME; // 阿里百秀 define('SYSTEM_VERSION', '阿里', true);
echo SYSTEM_VERSION; //阿里
echo system_version; //阿里
    第一个参数常量名称
   第二个是常量的值
第三个参数是常量名称是否忽略大小写 默认为false 不忽略 6,载入其他文件
  PHP中引入其他PHP文件有四种方式:
  require
  require_once
  include
  include_once
  

 config.php(定义公共的配置信息)
       1. 便于维护
       2. 公共使用

<?php

define('SYSTEM_NAME', 'HELLO');
define('SYSTEM_VERSION', '1.0.0');
define('DB_HOST', '192.168.110.120');

require.php

<?php

    require 'config.php';
echo SYSTEM_NAME; //类似CSS的 import 导入文件,require 可以用于在当前脚本中载入一个别的脚本文件并且执行它,require在每一次调用的时候都会载入对应的文件
<?php

   require_once 'config.php';
echo SYSTEM_NAME;
require_once 'config.php';
echo SYSTEM_NAME; //require_once 如果之前载入过,不再执行(执行一次),由于类似定义常量 定义函数 ,这种操作不能执行多次,所以require_once 更加适合载入这种文件(定义公共的配置信息)

aside.php

<aside>
这是侧边栏1111
</aside>

include.php

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<?php include 'aside.php'; ?>
<main>
这是主要的区域
</main>
</body>
</html>

require:一旦被载入的文件不存在就会报一个致命错误,当前文件不再往下执行  (不会任何输出)

include:载入文件不存在不会报错误(会有警告,警告不用管),当前文件继续执行 (打印出 “只是主要区域”)

												

PHP--API的更多相关文章

  1. 干货来袭-整套完整安全的API接口解决方案

    在各种手机APP泛滥的现在,背后都有同样泛滥的API接口在支撑,其中鱼龙混杂,直接裸奔的WEB API大量存在,安全性令人堪优 在以前WEB API概念没有很普及的时候,都采用自已定义的接口和结构,对 ...

  2. 12306官方火车票Api接口

    2017,现在已进入春运期间,真的是一票难求,深有体会.各种购票抢票软件应运而生,也有购买加速包提高抢票几率,可以理解为变相的黄牛.对于技术人员,虽然写一个抢票软件还是比较难的,但是还是简单看看123 ...

  3. 几个有趣的WEB设备API(二)

    浏览器和设备之间还有很多有趣的接口, 1.屏幕朝向接口 浏览器有两种方法来监听屏幕朝向,看是横屏还是竖屏. (1)使用css媒体查询的方法 /* 竖屏 */ @media screen and (or ...

  4. html5 canvas常用api总结(三)--图像变换API

    canvas的图像变换api,可以帮助我们更加方便的绘画出一些酷炫的效果,也可以用来制作动画.接下来将总结一下canvas的变换方法,文末有一个例子来更加深刻的了解和利用这几个api. 1.画布旋转a ...

  5. JavaScript 对数据处理的5个API

    JavaScript对数据处理包括向上取整.向下取整.四舍五入.固定精度和固定长度5种方式,分别对应ceil,floor,round,toFixed,toPrecision等5个API,本文将对这5个 ...

  6. ES5对Array增强的9个API

    为了更方便的对Array进行操作,ES5规范在Array的原型上新增了9个方法,分别是forEach.filter.map.reduce.reduceRight.some.every.indexOf ...

  7. javascript的api设计原则

    前言 本篇博文来自一次公司内部的前端分享,从多个方面讨论了在设计接口时遵循的原则,总共包含了七个大块.系卤煮自己总结的一些经验和教训.本篇博文同时也参考了其他一些文章,相关地址会在后面贴出来.很难做到 ...

  8. 一百元的智能家居——Asp.Net Mvc Api+讯飞语音+Android+Arduino

    大半夜的,先说些废话提提神 如今智能家居已经不再停留在概念阶段,高大上的科技公司都已经推出了自己的部分或全套的智能家居解决方案,不过就目前的现状而言,大多还停留在展厅阶段,还没有广泛的推广起来,有人说 ...

  9. 在一个空ASP.NET Web项目上创建一个ASP.NET Web API 2.0应用

    由于ASP.NET Web API具有与ASP.NET MVC类似的编程方式,再加上目前市面上专门介绍ASP.NET Web API 的书籍少之又少(我们看到的相关内容往往是某本介绍ASP.NET M ...

  10. bootstrap + requireJS+ director+ knockout + web API = 一个时髦的单页程序

    也许单页程序(Single Page Application)并不是什么时髦的玩意,像Gmail在很早之前就已经在使用这种模式.通常的说法是它通过避免页面刷新大大提高了网站的响应性,像操作桌面应用程序 ...

随机推荐

  1. 用配置文件里面的参数值替换yaml模板中的变量值【python】

    用配置文件里面的参数值替换yaml模板中的变量值[python] #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2019/9/20 1 ...

  2. HAproxy负载均衡-ACL篇(转) blog.csdn.net/tantexian

    ACL定制法则: 开放策略:拒绝所有,只开放已知 拒绝策略:允许所有,只拒绝某些 事实上实现安全策略,无非也就是以上两种方法 redirect 参考:http://cbonte.github.io/h ...

  3. linux卸载Python3

    一.卸载Python3 1.卸载python3 rpm -qa|grep python3|xargs rpm -ev --allmatches --nodeps 卸载pyhton3 2.whereis ...

  4. 使用 joblib 对 Pandas 数据进行并行处理

    使用 joblib 对 Pandas 数据进行并行处理 如果需要对一个很大的数据集进行操作,而基于一列数据生成新的一列数据可能都需要耗费很长时间. 于是可以使用 joblib 进行并行处理. 假设我们 ...

  5. 了解XPath与XPath轴

    XPath 是一门在 XML 文档中查找信息的语言.XPath 用于在 XML 文档中通过元素和属性进行导航. 节点(Node) 在 XPath 中,有七种类型的节点:元素.属性.文本.命名空间.处理 ...

  6. 重学Python - Day 07 - python基础 -> linux命令行学习 -- 常用命令 一

    常用命令和使用方法如下: man man 命令 #可以查询命令的用法 cat 和 tac cat是正序显示文件内容 tac是倒叙显示文件内容 sort 对文件内容排序 uniq 忽略文件中重复行 hi ...

  7. react中路由跳转push与replace的区别

    路由跳转,replace / push 区别 push: a-b-c 可以回到上一级 例: this.props.history.push('路由地址') replace: a-b-c 回不到上一级 ...

  8. C#作业系统中的安全系统

    比赛条件 编写多线程代码时,总是存在竞争条件的风险.当一个操作的输出取决于其控制之外的另一个过程的定时时,发生竞争条件. 竞争条件并不总是一个错误,但它是不确定行为的来源.当竞争条件确实导致错误时,可 ...

  9. vim编辑器详解(week1_day3)

    vi编辑器   作用:编辑文本文件中的内容的工具   命令历史   末行模式中,以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令.   启动vim   在命令行窗口中 ...

  10. 应用安全 - JavaScript - 框架 - Jquery - 漏洞 - 汇总

    jQuery CVE-2019-11358 Date 类型 原型污染 影响范围 CVE-2015-9251  Date 类型跨站 影响范围<jQuery 3.0.0