php入门教程之字符串函数学习笔记(1/3)

 更新时间:2016年11月25日 14:57  点击:1378
字符串是php中非常重要的一个知识点了,从另一个层面来讲php就是对字符串的一些操作了,所以php对于字符串操作的函数也是提供的相当的多了,下面我整理一些字符串函数使用例子。

PHP语言是一个功能强大的嵌入式HTML脚本语言,它的易用性让许多程序员选择使用。PHP判断字符串的包含,可以使用PHP的内置函数strstr,strpos,stristr直接进行判断.也可以通过explode函数的作用写一个判断函数。

探讨如何实现PHP判断字符串是否为IP
深入探讨PHP自动获取关键词的具体方法
PHP字符串函数的分类总结
分享PHP函数require()的具体使用技巧
PHP重定向网页的具体实现方法介绍
下面介绍PHP判断字符串的包含的具体使用方法:
1. strstr: 返回一个从被判断字符开始到结束的字符串,如果没有返回值,则不包含

代码如下:

 代码如下 复制代码
< ?php
/*如手册上的举例*/
$email = 'user@example.com';
$domain = strstr($email, '@');
echo $domain;
// prints @example.com
?>

2. stristr: 它和strstr的使用方法完全一样.唯一的区别是stristr不区分大小写.

3. strpos: 返回boolean值.FALSE和TRUE不用多说.用 “===”进行判断.strpos在执行速度上都比以上两个函数快,另外strpos有一个参数指定判断的位置,但是默认为空.意思是判断整个字符串.缺点是对中文的支持不好.

PHP判断字符串的包含代码如下:

 代码如下 复制代码
$str= ‘abc’;
$needle= ‘a’;
$pos = strpos($str, $needle);

4. 用explode进行判断

PHP判断字符串的包含代码如下:

 代码如下 复制代码
function checkstr($str){
$needle = “a”;//判断是否包含a这个字符
$tmparray = explode($needle,$str);
if(count($tmparray)>1){
return true;
} else{
return false;
}
}

以上就是PHP判断字符串的包含的具体代码示例。

去除字符串首尾处的空白字符或者任意字符 - trim - 返回去掉后的字符串

 代码如下 复制代码
/* 格式:trim(字符串,'要去掉的特殊字符可以是多个') */ 
$str=trim('     admin ');  
echo $str; // admin 两边无空格 
 
echo $str=trim(' admin ********','* '); // admin 
echo strlen($str); // 5 通过长度得知字符有没有被去掉 

             
去除字符串右侧的空白字符或者任意字符 - rtrim - 返回去掉后的字符串

 代码如下 复制代码
/* 格式:rtrim(字符串,'要去掉的特殊字符可以是多个') */ 
$str=rtrim('     admin ');  
echo $str; //'     admin' 右侧无空格 
 
echo $str=rtrim(' admin ********','* '); // admin 
echo strlen($str); // 10 通过长度得知字符有没有被去掉 

             
去除字符串右侧的空白字符或者任意字符 - chop - chop是rtrim的别名

 代码如下 复制代码
/* 格式:chop(字符串,'要去掉的特殊字符可以是多个') */ 
$str=chop('     admin ');  
echo $str; //'     admin' 右侧无空格 
 
echo $str=chop(' admin ********','* '); // admin 
echo strlen($str); // 10 通过长度得知字符有没有被去掉 

             
去除字符串左侧的空白字符或者任意字符 - ltrim - 返回去掉后的字符串

 代码如下 复制代码

/* 格式:ltrim(字符串,'要去掉的特殊字符可以是多个') */ 
$str=rtrim('     admin ');  
echo $str; //'     admin' 右侧无空格 
 
echo $str=ltrim(' admin ********','* '); // 'admin ********' 
echo strlen($str); // 14 通过长度得知字符有没有被去掉 

              
函数是一门程序中不可少的一个重要的东西,很多东西我们会做成函数这样可以方便重复调用了,下面本文章重点就是介绍函数php函数用法。

一、函数的声明
1、语法结构

 代码如下 复制代码

function 函数名 (参数列表)
{
    函数体; //可选
    返回值; //return可选
}

    参数列表用逗号隔开,勿遗漏$变量符号
    函数名不区分大小写,规则与变量一致
    函数调用才执行,可先调用后声明
    函数名不能重名,包括系统函数

2、函数调用

 代码如下 复制代码

function sum($x,$y) //形参:在声明函数时声明的参数
{
    // $x = 1; //如果在函数内对参数赋值,则会覆盖实参。
    // $y = 2;
    $sum = 0;
    $sum = $x + $y;
    return $sum; //执行到return函数结束,后面不再执行
}

sum();
sum(2,2); //实参:在调用函数时传递给形参的数值
echo sum(2,2); //通过return返回数据可作为值使用


二、函数中的变量
1、变量范围

    局部变量:函数内部声明与使用的变量
    全局变量:在函数外声明,脚本任何地方均可以使用

Tips:在PHP函数中使用全局变量,要通过global关键字将这个全局变量包含到函数中才能使用

 代码如下 复制代码

$a = 1;
$b = 2;
function demo($a = '')
{
    //global 须放在前面
    //global $a,$b global 可包含多个全局变量
    //$GLOBALS['a'] //声明全局变量 方法二
    global $a;
    $a += 5;
    echo $a;
}

demo();


2、PHP静态变量

    静态变量可以在同一个函数中多次调用中共用
    静态变量只能在函数或类中声明,不能在全局声明。

 代码如下 复制代码

function demo($a = '')
{
    static $a = 0; //定义静态变量
    $a++;
    echo "$a <br>";
}
demo(); //输出1
demo(); //输出2


3、变量函数

 代码如下 复制代码

$var = 'hello'; //变量名后面右括号,就寻找与变量值同名的函数
$var(); //等价于 hello();


三、函数分类及声明

1、函数分类

 代码如下 复制代码

//常规函数
bool copy(string source,string dest)

//带mixed,表示可以传任何类型的数据
bool chown(string filename,mixed user)

//带&参数的函数,这个参数只能是变量,变量值是动态的
//对数组进行排序,数组的索引保持和单元的关联
bool arsort ( array &$array [, int $sort_flags ] )
$fruits = array('a', 'c', 'b');
arsort($fruits);
var_dump($fruits);

//默认函数,即带[]中括号的函数,表示参数可选,若没有传值则使用默认值
//如果调用没有赋值,又没有初值则出现警告
function demo($a=1,$b=2)
{
    #code
}
demo();

//带有...参数的函数,表示可以传任意多个参数
//在数组开头插入一个或多个单元
int array_unshift ( array &$array , mixed $var [, mixed $... ] )

2、声明多个参数函数

 代码如下 复制代码

function Test()
{
    echo func_num_args();
}
Test('a','b','c');  // 3

func_get_arg():返回参数列表中的第N个参数

function Test()
{
    echo func_get_arg('1');
}
Test('a','b','c'); //b

使用实例

 代码如下 复制代码

function cls_mysql()
{
    $mysql = func_get_args();
    $conn = mysql_connect($mysql['0'], $mysql['1'], $mysql['2']);
}
cls_mysql('localhost:3306', 'root', '123456');

3、函数注释规范

 代码如下 复制代码
/**
 * 用用演示函数 //函数功能,决定是否使用
 *
 * @static
 * @access public
 * @param string $attributeName 属性名称 //函数参数,决定怎样调用
 * @return string //函数的返回值,决定调用后怎么处理
 */
public function demo($attributeName)
{
    $attributeName = 'abc';
    return $attributeName
}


四、Callback 回调函数

我们自定义一个函数A,但是我们不直接去调函数A,而是在函数B中去调用函数A,函数B通过接收函数A的名字和参数来实现对函数A的调用,函数A称为回调函数。

 代码如下 复制代码

function A($x,$y)
{
    return $x*$y;
}
function B($a,$b,$fun)
{
    return $a+$b+$fun($a,$b);
}
echo B(2,3,"A");


PHP回调函数的实现方法

php提供了两个内置函数call_user_func()和call_user_func_array()提供对回调函数的支持

 代码如下 复制代码

//mixed call_user_func_array 以数组的形式接收回调函数的参数
mixed call_user_func_array ( callable $callback , array $param_arr )
call_user_func_array('f1',array('A','B'));

//call_user_func的参数个数根据回调函数的参数来确定
mixed call_user_func ( callable $callback [, mixed $parameter [, mixed $... ]] )
call_user_func_array('f1','A','B');


实例:

 代码如下 复制代码

//普通全局函数
function f1($arg1,$arg2)
{
    echo $arg1."<br>".$arg2."<br>";
}

echo "通过call_user_func_array调用函数f1:<br>";
call_user_func_array('f1',array('A','B'));

echo "通过call_user_func调用函数f1:<br>";
call_user_func('f1','C','D');

//类
class myClass
{
    public $name;
    function show($arg1)
    {
        echo '参数名:'.$arg1."<br>";
        echo '对象中的成员名:'.$this->name;
        echo "<br>";
    }
    function show1($arg1,$arg2)
    { 
        echo $arg1."<br>".$arg2."<br>";
    }
    public static function show2($arg1,$arg2) 
    {
        echo $arg1."<br>".$arg2."<br>";
    }
}

echo "调用类中非静态成员函数,该成员函数中有this调用了对象中的成员:<br>";
$a = new myClass;
$a->name = 'F';
call_user_func_array(array($a,'show'),array('E'));

echo "调用类中非静态成员函数,该函数没有调用对象中的成员,没有this:<br>";
call_user_func_array(array('myClass','show1'),array('G','H'));

echo "调用类中静态成员函数:<br>";
call_user_func_array(array('myClass','show2'),array('I','J'));

五、内部函数

在函数内部再声明函数,目的是在函数内部调用,用来帮助外部函数完成一些子功能

下面来看一个关于php把excel数值格式转成日期格式问题,因为自己在做一个转换时碰到问题,后来网上找到解决办法与原因下面一起看看。

在excel中:40847对应2011-10-31,是日期的数值型表现形式。

在PHP中,echo date('Y-m-d H:i:s',40847);//结果1970-01-01 11:52:30

原因:

PHP 的时间函数是从1970-1-1日开始计算的,单位是秒数。但是 EXCEL的是从1900-1-1日开始算的单位是天数。

如果只计算1970以后的时间的话,就好处理了。

先获得 EXCEL中 1970-1-1 代表的数字,我查了是25569。

现在要把excel中的40947,在php中用函数正确的显示出来

代码如下:
<?php
  $time = (40847 – 25569) * 24*60*60; //获得秒数
  echo date('Y-m-d H:i:s', $time);   //出来 2011-10-31
?>

一个小的应用要用到txt文件来读取文件的内容之后再显示出来文件里面的内容了,下面来给各位分个例子,希望能帮助到各位哦。

例子

 代码如下 复制代码

<?
$file_name="1.txt";
echo $file_name."
";
$fp=fopen($file_name,'r');
//$buffer=fgets($fp);
while(!feof($fp)){
$buffer=fgets($fp);
echo $buffer;
}
fclose($fp);
?>

除了使用fopen函数之外还可以使用像file_get_contents函数

 

 代码如下 复制代码
if( file_exists( $path ) )
{
$body = file_get_contents($path);
 echo $body ;//输入文件内容
}
else
{
    echo "文件不存在 $path";
}

这个函数是一次性读取所有文件内容并显示出来,但是如果文件超大会导致php占很大的内存了。

当然还有像file这种一般是把文件读成数组了,同时也可以实现读取文件了

在php中static const define三个变量都是可以叫做静态表情了,意思是定义好的就不能再变了,但是他们三个是针对不同的域名,下面我来给各位介绍一下它们三个的区别吧。

const

用来定义那些在运行时不能被改变的常数值。一旦定义且不能改变其值,假如在程序中改变了它的值,那么会出现错误。

 代码如下 复制代码

<?php
 calss Math{
 const pi=3.14159;
}
echo Math::pi;
?>

前面没有美元符号($),可以在不需要初始化该类的情况下实用。常量值必须是一个常量表达式。const定义的变量,在子类中可以被覆盖。
在类的内部定义,php5.3以后也可以在类的外部定义。
const不可以用表达式。

define()

可以用 define() 函数来定义常量。一个常量一旦被定义,就不能再改变或者取消定义。
常量只能包含标量数据(boolean,integer,float 和 string)。
可以简单的通过指定其名字来取得常量的值,不要在常量前面加上 $ 符号。
define定义全局常量,在任何地方都可以访问。
define不能在类中定义而const可以。
define可以采用任何表达式。如define('BIT_5', 1 << 5);

 代码如下 复制代码

<?php
define("CONSTANT", "Hello world.");
echo CONSTANT; // outputs "Hello world."
echo Constant; // outputs "Constant" and issues a notice.
?>


define()与const()两者之间的区别:

内存空间的分配上。define进行宏定义的时候,不会分配内存空间,编译时会在main函数里进行替换,只是单纯的替换,不会进行任何检查,比如类型,语句结构等,即宏定义常量只是纯粹的置放关系,如#define null 0;编译器在遇到null时总是用0代替null它没有数据类型(还有疑问请找C语言书籍看预处理部分或者看MSDN.而const定义的常量具有数据类型,定义数据类型的常量便于编译器进行数据检查,使程序可能出现错误进行排查,所以const与define之间的区别在于const定义常量排除了程序之间的不安全性.
define定义全局常量,在任何地方都可以访问
const用于类成员变量定义,只能用类名访问不能更改要是初学这样显理解着就行别太钻牛角尖就行

static

php中的变量作用范围的另一个重要特性就是静态变量(static 变量)。
静态变量仅在局部函数域中存在且只被初始化一次,当程序执行离开此作用域时,其值不会消失,会使用上次执行的结果。
static关键字在类中,描述一个成员是静态的,static能够限制外部的访问,因为static后的成员是属于类的,是不属于任何对象实例。
static的成员,必须使用self来访问。

 代码如下 复制代码

class Counter
{
public static $count = 0;//定义一个静态属性
//定义一个静态的方法
static function getCount()
{
return self::$count;
}

echo Counter::getCount();
Counter::count;

最后补充一个例子:

 

 代码如下 复制代码

<?php


echo HAHA;

class test {
    public $name2 = 'name2';
    static $name = 'name';
    const CHARSET = "中国";
    public function say_hello() {
        echo self :: CHARSET;
    }

    public static function set_name() {
        echo self :: $name;
    }

    public static function set_name2() {
        self::set_name();
    }
  
    public static function set_name3() {
        echo $this->name;
        $this->set_name();
    }
  
}
$const1 = new test();

// 1
$const1->say_hello();

// 2
echo "<br />";
echo test :: CHARSET;

// 3
echo "<br />";
echo $const1->name;

// 4
echo "<br />";
echo $const1->set_name();

// 5
echo "<br />";
echo $const1->set_name2();

// 6
echo "<br />";
echo test::CHARSET;

// 7
echo "<br />";
echo $const1->CHARSET;
?>

[!--infotagslink--]

相关文章

  • C#中截取字符串的的基本方法详解

    这篇文章主要介绍了C#中截取字符串的的基本方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-11-03
  • c#中判断字符串是不是数字或字母的方法

    这篇文章介绍了C#判断字符串是否数字或字母的实例,有需要的朋友可以参考一下...2020-06-25
  • PostgreSQL判断字符串是否包含目标字符串的多种方法

    这篇文章主要介绍了PostgreSQL判断字符串是否包含目标字符串的多种方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-02-23
  • 详解C++ string常用截取字符串方法

    这篇文章主要介绍了C++ string常用截取字符串方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-04-25
  • php字符串按照单词逐个进行反转的方法

    本文实例讲述了php字符串按照单词进行反转的方法。分享给大家供大家参考。具体分析如下:下面的php代码可以将字符串按照单词进行反转输出,实际上是现将字符串按照空格分隔到数组,然后对数组进行反转输出。...2015-03-15
  • 使用list stream: 任意对象List拼接字符串

    这篇文章主要介绍了使用list stream:任意对象List拼接字符串操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-09-09
  • Lua语言新手简单入门教程

    这篇文章主要给大家介绍的是关于Lua语言新手入门的简单教程,文中通过示例代码一步步介绍的非常详细,对各位新手们的入门提供了一个很方便的教程,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。...2020-06-30
  • MySQL 字符串拆分操作(含分隔符的字符串截取)

    这篇文章主要介绍了MySQL 字符串拆分操作(含分隔符的字符串截取),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-22
  • C# 16 进制字符串转 int的方法

    这篇文章主要介绍了C# 16 进制字符串转 int的方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • 获取中文字符串的实际长度代码

    JS中默认中文字符长度和其它字符长度计算方法是一样的,但某些情况下我们需要获取中文字符串的实际长度,代码如下: 复制代码 代码如下: function strLength(str) { var realLength = 0, len = str.length, charCode = -1;...2014-06-07
  • C#实现字符串转换成字节数组的简单实现方法

    这篇文章主要介绍了C#实现字符串转换成字节数组的简单实现方法,仅一行代码即可搞定,非常简单实用,需要的朋友可以参考下...2020-06-25
  • PostgreSQL 字符串处理与日期处理操作

    这篇文章主要介绍了PostgreSQL 字符串处理与日期处理操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-01
  • php 中英文混合字符串截取

    文章介绍一个实用的函数,我们如果用php substr来截取字符在中文上处理的很有问题,今天自己写了一个比较好的中文与英文字符截取的函数,有需要的朋友可以参考下。 ...2016-11-25
  • C#实现对字符串进行大小写切换的方法

    这篇文章主要介绍了C#实现对字符串进行大小写切换的方法,涉及C#操作字符串的技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • c#将字节数组转成易读的字符串的实现

    这篇文章主要介绍了c#将字节数组转成易读的字符串的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-06-25
  • C#获取字符串后几位数的方法

    这篇文章主要介绍了C#获取字符串后几位数的方法,实例分析了C#操作字符串的技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • 解决vue字符串换行问题(绝对管用)

    这篇文章主要介绍了解决vue字符串换行问题(绝对管用),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-06
  • C#判断一个字符串是否是数字或者含有某个数字的方法

    这篇文章主要介绍了C#判断一个字符串是否是数字或者含有某个数字的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • 【C#基础】Substring截取字符串的方法小结(推荐)

    这篇文章主要介绍了Substring截取字符串方法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-06-25
  • 使用PHP similar text计算两个字符串相似度

    在网站开发中,我们经常使用php similar text 计算两个字符串相似度;1,similar_text的用法 如果我想计算"ly89cn"和"ly89"的相似程度,有两种表示方法复制代码 代码如下: echo similar_text('ly89cn', 'ly89'); ...2015-11-08