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. python中列表的简单用法

    1.定义list >>> li = ["a", "b", "mpilgrim", "z", " ...

  2. koa 基础(十六)koa 中 session 的使用

    1.app.js /** * koa 中 session 的使用 * 1.npm install koa-session --save * 2.const session = require('koa ...

  3. 编译openwrt时报错build_dir/hostpkg/libubox-2018-07-25-c83a84af/blobmsg_json.c:21:19: fatal error: json.h: No such file or directory

    答: 一. 详细日志: build_dir/hostpkg/libubox-2018-07-25-c83a84af/blobmsg_json.c:21:19: fatal error: json.h: ...

  4. mysql之备份与恢复

    数据备份全备 备份命令 :mysqldump把数据库的数据以sql语句导出属于逻辑备份 格式 : mysqldump -uroot -p123456 -S 多实例的mysql.sock 数据库名 &g ...

  5. dpkg软件包管理

    要想得心应手管理Ubuntu软件包,就必须熟悉其中最重要的软件包管理程序dpkg工具是Ubuntu软件包管理工具的基础.使用dpkg工具可以实现软件包的安装.卸载.查询.编译.打包等功能. dpkg( ...

  6. struts2数据处理的几种方式

    package com.loaderman.c_data; import java.util.Map; import javax.servlet.ServletContext; import com. ...

  7. mongdb group聚合操作

    1.数据准备 [{"goods_id":1,"cat_id":4,"goods_name":"KD876"," ...

  8. 八十三:redis之redis的使用场景和安装

    使用场景1.登录会话存储,存储在redis中,与mamcached相比,数据不会丢失2.排行榜.计数器:比如一些秀场类的项目,经常会有一些前多少名的主播排行榜,还有一些文章阅读量.或者点赞数等3.作为 ...

  9. MSSQL字符串分割

    CREATE FUNCTION dbo.f_splitstr( @str varchar(8000) )RETURNS @r TABLE(id int IDENTITY(1, 1), value va ...

  10. Oracle 自增序列的生成

    1.代码结构 .创建 第一种 -- Create sequence create sequence SEQ_USERID minvalue maxvalue start increment nocac ...