.

PHP 字符串处理9

文章作者:eKing
发表时间:2016年11月13日 08:04
浏览次数:161

PHP 字符串处理

PHP 字符串处理

PHP 的字符串处理功能非常强大,主要包括:

字符串输出

echo():输出一个或多个字符串

print():输出一个字符串

printf():输出格式化字符串

字符串去除

trim():去除字符串 首尾 空白等特殊符号或指定字符序列

ltrim():去除字符串 首 空白等特殊符号或指定字符序列

rtrim():去除字符串 尾 空白等特殊符号或指定字符序列

chop():同 rtrim()

字符串连接

implode():使用字符将数组的内容组合成一个字符串

join():同 implode()

字符串分割

explode():使用一个字符串分割另一个字符串

str_split():将字符串分割到数组中

字符串获取

substr():从字符串中获取其中的一部分

strstr():查找字符串在另一个字符串中第一次出现的位置,并返回从该位置到字符串结尾的所有字符

subchr():同 strstr()

strrchr():查找字符串在另一个字符串中最后一次出现的位置,并返回从该位置到字符串结尾的所有字符

字符串替换

substr_replace():把字符串的一部分替换为另一个字符串

str_replace():使用一个字符串替换字符串中的另一些字符

字符串计算

strlen():取得字符串的长度

strpos():定位字符串第一次出现的位置

strrpos():定位字符串最后一次出现的位置

字符串 XHTML 格式化显示

nl2br():将换行符 n 转换成 XHTML 换行符 <br />

htmlspecialchars():把一些特殊字符转换为 HTML 实体

htmlspecialchars_decode():把一些 HTML 实体转换为特殊字符,htmlspecialchars() 的反函数

字符串存储(转义)

addslashes():对特殊字符加上转义字符。

stripslashes():addslashes() 的反函数。

提示:如果需要更复杂的字符串处理,可以使用正则表达式,具体参看《PHP 正则表达式》。

PHP 字符串输出 echo、print 与 printf 函数

PHP 字符串输出

用于字符串输出的函数主要有:

echo():输出一个或多个字符串

print():输出一个字符串

printf():输出格式化字符串

echo()

echo()是指令而不是函数,它没有返回值,可以输出一个或多个字符串。

语法:

void echo ( string arg1 [, string ...] )

例子:

<?php

$foo = "foobar";

$bar = "barbaz";

echo $foo,$bar; // 输出"foobarbarbaz"

echo "<br />";

echo $foo[3]; // 输出第4个字符"b"

echo "<br />";

echo "foo is $foo"; // 输出"foo is foobar"

echo "<br />";

echo 'foo is $foo'; // 输出"foo is $foo"

?>

说明

双引号内的变量会被解释,而单引号内的变量则原样输出,参考《PHP 数据类型 - 字符串(string)类型》。

字符串计算是从 0 开始计数

print()

print() 用于输出一个字符串。print() 是函数,返回一个整型,但只能有一个参数,其用法同 echo ,但不能输出数组和对象。

语法:

int print( string arg )

printf()

printf() 用于格式化输出字符串,返回一个整型。

语法:

int printf(string format, arg1, arg2, ...)

format 为字符串以及变量的格式化方式,arg1 为插入第一个%符号处的参数,agr2等以此类推。

格式化方式说明: 格式化方式 说明

%d 十进制有符号整数

%u 十进制无符号整数

%f 浮点数

%s 字符串

%c 单个字符

%p 指针的值

%e 指数形式的浮点数

%x/%X 无符号以小/大写十六进制表示的整数

%o 无符号以八进制表示的整数

%g 自动选择合适的表示法

例子:

<?php

$str = "This";

$number = 31;

printf("%s month has %u days",$str,$number); //输出 This month has 31 days

?>

PHP 字符串去除 trim、ltrim 与 rtrim 函数

PHP 字符串去除

用于去除字符串首尾空白等特殊符号或指定的字符。

相关函数如下:

trim():去除字符串 首尾 空白等特殊符号或指定字符序列

ltrim():去除字符串 首 空白等特殊符号或指定字符序列

rtrim():去除字符串 尾 空白等特殊符号或指定字符序列

chop():同rtrim()

trim()

去除字符串首尾空白等特殊符号或指定字符序列。

语法:

string trim(string str[, charlist])

当设定字符序列 charlist 参数时,trim() 函数将去除字符串首尾的这些字符,否则 trim() 函数将去除字符串首尾的以下这些特殊字符:

字符 说明

空格

t tab键

n 换行符

r a carriage return

空字符

x0B a vertical tab

例子:

<?php

$text = "Hello World ";

$trimmed = trim($text);

echo $trimmed; //输出"Hello World"

echo "<br />";

echo trim($trimmed, "Hdle"); //输出"o Wor"

echo "<br />";

echo trim($text, "Hdle"); //输出"o World"

?>

从这个例子可以看出,trim() 函数将不会去除非首尾的 charlist 。

ltrim()

去除字符串首的特殊符号或指定字符序列,用法同 trim() 。

语法:

string ltrim(string str[, charlist])

rtrim()

去除字符串尾的特殊符号或指定字符序列,用法同 trim() 。

语法:

string rrim(string str[, charlist])

chop()

同 rtrim() 。

PHP implode 函数:将数组元素组合为字符串

PHP implode()

implode() 函数用于将数组元素组合为一个字符串,并返回该字符串。

语法:

string implode( string glue, array array )

参数说明: 参数 说明

glue 连接数组元素的字符

array 需要组合为字符串的数组

连接符为 ^ 的例子:

<?php

$array = array('姓名', '电话', '电子邮箱');

$char = implode("^", $array);

echo $char;

?>

浏览器输出:

姓名^电话^电子邮箱

可以使用空格作为连接符:

<?php

$char = implode(" ", $array);

?>

提示

根据实际情况,可以选择空格作为连接符或者特殊符号作为连接符以便后续的字符串处理操作。

连接符参数 glue 默认是可以为空的,但为了向后兼容,推荐仍然使用该参数。

本函数可安全用于二进制对象。

PHP join()

join() 为 implode() 的别名函数。

PHP implode() 函数的反函数为 explode():使用一个分割符号分割一个字符串并组成数组。

参考阅读

PHP explode:使用一个分割符号分割一个字符串到数组中。

PHP split:用正则表达式将字符串分割到数组中。

PHP 字符串分割 explode 与 str_split 函数

PHP 字符串分割

用于分割字符串。

相关函数如下:

explode():使用一个字符串分割另一个字符串

str_split():将字符串分割到数组中

explode()

本函数为 implode() 的反函数,使用一个字符串分割另一个字符串,返回一个数组。

语法:

array explode( string separator, string string [, int limit] )

参数说明: 参数 说明

separator 分割标志

string 需要分割的字符串

limit 可选,表示返回的数组包含最多 limit 个元素,而最后那个元素将包含 string 的剩余部分,支持负数。

例子:

<?php

$str = 'one|two|three|four';

print_r(explode('|', $str));

print_r(explode('|', $str, 2));

// 负数的 limit(自 PHP 5.1 起)

print_r(explode('|', $str, -1));

?>

输出结果如下:

Array

(

[0] => one

[1] => two

[2] => three

[3] => four

)

Array

(

[0] => one

[1] => two|three|four

)

Array

(

[0] => one

[1] => two

[2] => three

)

str_split()

str_split() 将字符串分割为一个数组,成功返回一个数组。

语法:

array str_split( string string [, int length] )

参数说明: 参数 说明

string 需要分割的字符串

length 可选,表示每个分割单位的长度,不可小于1

例子:

<?php

$str = 'one two three';

$arr1 = str_split($str);

$arr2 = str_split($str, 3);

print_r($arr1);

print_r($arr2);

?>

输出结果如下:

Array

(

[0] => o

[1] => n

[2] => e

[3] =>

[4] => t

[5] => w

[6] => o

[7] =>

[8] => t

[9] => h

[10] => r

[11] => e

[12] => e

)

Array

(

[0] => one

[1] => tw

[2] => o t

[3] => hre

[4] => e

)

PHP 字符串获取 substr 与 strstr 函数

PHP 字符串获取

用于从字符串中获取指定字符串。

相关函数如下:

substr():从字符串中获取其中的一部分

strstr():查找字符串在另一个字符串中第一次出现的位置,并返回从该位置到字符串结尾的所有字符

subchr():同 strstr()

strrchr():查找字符串在另一个字符串中最后一次出现的位置,并返回从该位置到字符串结尾的所有字符

substr()

substr() 函数用于从字符串中获取其中的一部分,返回一个字符串。

语法:

string substr ( string string, int start [, int length] )

参数说明如下: 参数 说明

string 要处理的字符串

start 字符串开始位置,起始位置为 0 ,为负则从字符串结尾的指定位置开始

length 可选,字符串返回的长度,默认是直到字符串的结尾,为负则从字符串末端返回

例子:

<?php

echo substr('abcdef', 1); //输出 bcdef

echo substr('abcdef', 1, 2); //输出 bc

echo substr('abcdef', -3, 2); //输出 de

echo substr('abcdef', 1, -2); //输出 bcd

?>

提示

如果 start 是负数且 length 小于等于 start ,则 length 为 0。

strstr()

查找字符串在另一个字符串中第一次出现的位置,并返回从该位置到字符串结尾的所有字符,如果没找到则返回 FALSE。

语法:

string strstr ( string string, string needle )

参数说明如下: 参数 说明

string 要处理的字符串

needle 要查找的字符串,如果是数字,则搜索匹配数字 ASCII 值的字符

例子:

<?php

$email = 'user@5idev.com';

$domain = strstr($email, '@');

echo $domain; // 输出 @5idev.com

?>

提示

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

strchr()

同 strstr() 。

strrchr()

查找字符串在另一个字符串中最后一次出现的位置,并返回从该位置到字符串结尾的所有字符,如果没找到则返回 FALSE。

语法:

string strrchr ( string string, string needle )

该函数行为同 strstr() 函数,参数意义可参见上面 strstr() 函数参数说明。

例子:

<?php

$str="AAA|BBB|CCC";

echo strrchr($str, "|");

?>

运行例子,输出:

|CCC

结合 substr() 函数便可以实现 截取某个最后出现的字符后面的所有内容 这一功能:

<?php

$str="AAA|BBB|CCC";

echo substr(strrchr($str, "|"), 1);

?>

PHP 字符串替换 substr_replace 与 str_replace 函数

PHP 字符串替换

用于从字符串中替换指定字符串。

相关函数如下:

substr_replace():把字符串的一部分替换为另一个字符串

str_replace():使用一个字符串替换字符串中的另一些字符

substr_replace()

substr_replace() 函数用于把字符串的一部分替换为另一个字符串,返回混合类型。

语法:

mix substr_replace ( mixed string, string replacement, int start [, int length] )

参数说明如下: 参数 说明

string 要处理的字符串

replacement 要插入的字符串

start 字符串开始位置,起始位置为 0 ,为负则从字符串结尾的指定位置开始

length 可选,字符串返回的长度,默认是直到字符串的结尾,为负则从字符串末端返回

例子:

<?php

echo substr_replace('abcdef', '###', 1); //输出 a###

echo substr_replace('abcdef', '###', 1, 2); //输出 a###def

echo substr_replace('abcdef', '###', -3, 2); //输出 abc###f

echo substr_replace('abcdef', '###', 1, -2); //输出 a###ef

?>

提示

如果 start 是负数且 length 小于等于 start ,则 length 为 0。

str_replace()

str_replace() 函数使用一个字符串替换字符串中的另一些字符,返回混合类型。

语法:

mixed str_replace( mixed search, mixed replace, mixed string [, int &count] )

参数说明如下: 参数 说明

search 要查找(被替换)的字符串

replace 要替换 search 的字符串

string 要处理的字符串

count 可选,一个对替换计数的变量

例子:

<?php

echo str_replace("world","earth","Hello world!"); //输出 Hello earth!

//替换多个,且第二个参数为空字符

echo str_replace("o","","Hello world!"); //输出 Hell wrld!

//使用数组

$arr = array("e", "o");

$arr2 = array("x", "y");

echo str_replace($arr, $arr2, "Hello World of PHP", $i); //输出 Hxlly Wyrld yf PHP

echo $i; //输出4

?>

提示

该函数与 substr_replace() 不同之处是满足条件的都进行替换

该函数对大小写敏感。如需进行大小写不敏感的查找替换,请使用 str_ireplace()

PHP 字符串计算 strlen、strpos 与 strrpos 函数

PHP 字符串计算

计算字符串的长度或定位字符串出现的位置。

相关函数如下:

strlen():取得字符串的长度

strpos():定位字符串第一次出现的位置

strrpos():定位字符串最后一次出现的位置

strlen()

strlen() 函数用于取得字符串的长度,返回一个整型。

语法:

string substr( string string )

例子:

<?php

echo strlen('abc def'); //输出 7

echo strlen('ab北京'); //输出 6 ,UTF-8编码下输出 8

?>

strpos()

strpos() 函数用于定位字符串第一次出现的位置,返回整型。

语法:

int strpos ( string string, mixed needle [, int start] )

参数说明如下: 参数 说明

string 要处理的字符串

needle 要定位的字符串

start 可选,定位的起始位置

例子:

<?php

echo strpos('abcdef', 'c'); //输出 2

?>

strrpos()

strrpos() 函数用于定位字符串最后一次出现的位置,返回整型。

语法:

int strpos ( string string, mixed needle [, int start] )

strrpos() 函数用法与 strpos() 类似,只不过 strrpos() 用于取得指定字串最后出现的位置。

例子:

<?php

$str = "This function returns the last occurance of a string";

$pos = strrpos($str, "st");

if($pos !== FALSE){

echo '字串 st 最后出现的位置是:',$pos;

} else {

echo '查找的字符串中没有 in 字串';

}

?>

运行该例子,浏览器输出:

字串 st 最后出现的位置是:46

PHP 字符串 XHTML格式化显示 nl2br 与 htmlspecialchars 函数

PHP 字符串格式化显示

将字符串格式化为适合网页显示的格式。

相关函数如下:

nl2br():将换行符 n 转换成 XHTML 换行符 <br />

htmlspecialchars():把一些特殊字符转换为 HTML 实体

htmlspecialchars_decode():把一些 HTML 实体转换为特殊字符, htmlspecialchars() 的反函数

nl2br()

nl2br() 函数用于将字符串中的换行符 n 转换成 XHTML 换行符 <br />,返回转换后的字符串。

语法:

string nl2br( string string )

例子:

<?php

echo nl2br("这个地方要换行n显示");

?>

浏览器输出 XHTML 源代码如下:

这个地方要换行<br />

显示

htmlspecialchars()

htmlspecialchars() 函数把一些特殊字符转换为 HTML 实体,返回一个字符串。

语法:

string htmlspecialchars( string string )

转换的特殊字符如下:

& 转换为 &amp;

" 转换为 &quot;

< 转换为 &lt;

> 转换为 &gt;

关于 HTML 特殊字符与实体参见《XHMTL 特殊字符与实体 》:

例子:

<?php

echo htmlspecialchars('<a href="test">Test</a>');

?>

浏览器输出 XHTML 源代码如下:

<a href="test">Test</a>

提示

要把所有特殊字符转换为 HTML 实体请使用 htmlentities() 。

htmlspecialchars_decode()

htmlspecialchars_decode() 把一些 HTML 实体转换为特殊字符,返回一个字符串,为 htmlspecialchars() 的反函数。

语法:

string htmlspecialchars_decode()( string string )

转换的实体如下:

&amp; 转换为 &

&quot; 转换为 "

&lt; 转换为 <

&gt; 转换为 >

提示

要把所有 HTML 实体转换为特殊字符请使用 htmlentities_decode() 。

PHP 字符串存储(转义) addslashes 与 stripslashes 函数

PHP 字符串存储(转义)

PHP 的字符串向数据库进行写入时,为避免数据库错误,需要对特殊字符进行转义(字符前加上 符号)。如 O'reilly 转义成 O'reilly,这样可以将数据放入数据库中,而不会插入额外的 。

这些特殊字符包括:单引号(')、双引号(")、反斜线()与 NUL(NULL 字符)。

addslashes()

addslashes() 函数用于对特殊字符加上转义字符,返回一个字符串。

语法:

string addslashes ( string string )

例子:

<?php

$str = "Is your name O'reilly?";

echo addslashes($str); // 输出:Is your name O'reilly?

?>

提示

默认情况下,PHP 指令 magic_quotes_gpc 为 on,系统会对所有的 GET、POST 和 COOKIE 数据自动运行 addslashes() 。不要对已经被 magic_quotes_gpc 转义过的字符串使用 addslashes() ,因为这样会导致双层转义。

可以对 get_magic_quotes_gpc() 进行检测以便确定是否需要使用 addslashes() :

<?php

if (!get_magic_quotes_gpc()) {

$lastname = addslashes($_POST['lastname']);

} else {

$lastname = $_POST['lastname'];

}

echo $lastname; //转义后的字符如:O'reilly

?>

stripslashes()

该函数为 addslashes() 的反函数,返回一个字符串。

语法:

string stripslashes ( string string )

例子:

<?php

$str = "Is your name O'reilly?";

echo stripslashes($str); // 输出:Is your name O'reilly?

?>

上一篇:PHP 函数8
下一篇:PHP 数组10