Quantcast
Channel: CodeSection,代码区,网络安全 - CodeSec
Viewing all articles
Browse latest Browse all 12749

PHP常用字符串函数详解

0
0

本篇一直来学习一下php中常用的字符串操作函数吧,记录下来对以后工作会很有帮助的,今天的努力一定会成为明天的筹码!

PHP开发并不会像iOS那样有那么强大的智能提示功能,因此我们需要记忆下来,而笔者记忆力并不是那么好,只能记得有那么一个功能函数,但是要记住具体参数什么的就不行了。

因此,本篇文章既是学习PHP所有常用函数的使用,同时也是备忘录!


PHP常用字符串函数详解
添加反斜杠函数

功能:addcslashes(string,characters)函数返回在指定字符前添加反斜杠的字符串,两个参数都是必须的。

$str = addcslashes("A00 A01 A02", "A"); echo "$str"; // 输出 // \A00 \A01 \A02

注意:对以下字符应用addcslashes()时请小心:0(NULL), r(回车), n(换行), f 换页)、t(制表符)以及 v(垂直制表符)。在 PHP 中,\0, \r, \n, \t, \f 以及 \v 是预定义的转义序列。

在预定义字符前添加反斜杠

功能:addslashes(string)函数返回在预定义的字符之前添加反斜杠的字符串。

预定义字符是:

单引号(’) 双引号(”) 反斜杠(\) NULL $str = addslashes('欢迎访问"标哥的技术博客"'); // 欢迎访问\"标哥的技术博客\" echo "$str" . '<br>'; $str = addslashes("Who's name is Jack?"); // Who\'s name is Jack? echo "$str". '<br>'; $str = addslashes('添加反斜杠\如何转义?'); // 添加反斜杠\\如何转义? echo "$str". '<br>';

注意:默认地,PHP对所有的GET、POST和COOKIE数据自动运行 addslashes()。所以您不应对已转义过的字符串使用 addslashes(),因为这样会导致双层转义。遇到这种情况时可以使用函数 get_magic_quotes_gpc() 进行检测。

ASCII字符串转换十六进制

功能:bin2hex(string)函数把ASCII字符的字符串转换为十六进制值。字符串可通过使用pack()函数再转换回去。

$str = bin2hex('BiaoGeDeJiShuBoKe'); // 4269616f476544654a69536875426f4b65 echo "$str";

字符B的ASCII值为66,转为十六进制值为42!

删除字符串右端空白符或其他预定义符

功能:chop(string,charlist)函数移除字符串右端的空白字符或其他预定义字符。

如果charlist参数为空,则移除以下字符:

\0 NULL \t 制表符 \n 换行 \x0B 垂直制表符 \r 回车 “ ” 空格 $str = "I am BiaoGe \n \n HaHa<br>"; // I am BiaoGe HaHa echochop($str); $str = 'I am BiaoGe\n\n'; // I am BiaoGe\n\n echochop($str);

只对于使用双引号的字符串生效,使用单引号的字符串并没有移除!

ASCII值返回字符

功能:chr(ascii)函数从指定的 ASCII 值返回字符。ASCII值可指定为十进制值、八进制值或十六进制值。八进制值被定义为带前置0,而十六进制值被定义为带前置0x。

echochr(61) . "<br>"; // 十进制 = echochr(061) . "<br>"; // 八进制值 1 echochr(0x61) . "<br>"; // 十六进制值 a 字符串分割为一系列小串

功能:chunk_split(string,length,end)函数把字符串分割为一连串更小的部分。

string必需。规定要分割的字符串。 length可选。数字值,定义字符串块的长度。默认是76。 end可选。字符串值,定义在每个字符串块末端放置的内容。默认是 \r\n。 $str = "标哥的技术博客网站是www.huangyibiao.com"; // 标哥的技术博客[分割符是这里]网站是www.huangyib[分割符是这里]iao.com[分割符是这里] echochunk_split($str, strlen('标哥的技术博客'), '[分割符是这里]');

如果有汉字,一定要注意长度不能直接写7哦!

DES/Blowfish/MD5加密

功能:crypt(str,salt)函数返回使用 DES、Blowfish 或 MD5 算法加密的字符串。

str必需。规定要编码的字符串。 salt可选。用于增加被编码字符数目的字符串,以使编码更加安全。如果未提供 salt参数,则每次调用该函数时PHP会随机生成一个。

在不同的操作系统上,该函数的行为不同,某些操作系统支持一种以上的算法类型。在安装时,PHP 会检查什么算法可用以及使用什么算法。具体的算法依赖于 salt 参数的格式和长度。通过增加由使用特定加密方法的特定字符串所生成的字符串数量,salt 可以使加密更安全。

因为在不同系统上,这个算法不一样,因此使用不多!

explode字符串分割成数组

功能:explode(separator,string,limit)使用指定的分割符将字符串分割。

separator 必需。规定在哪里分割字符串。 string 必需。要分割的字符串。 limit 可选。规定所返回的数组元素的数目。 $str = 'A, B, C, D'; // Array ( [0] => A [1] => B [2] => C [3] => D ) print_r(explode(', ', $str)); $str = 'A, B, C, D'; // Array ( [0] => A [1] => B, C, D ) print_r(explode(', ', $str, 2));

这个函数特别常使用!

implode数组组合为字符串

功能:implode(separator,array)将数组元素以某个分隔符组合成一个字符串。separator可选,默认为空字符串。它还有一个别名函数叫join(separator,array),用法基本一样!

$arr = array( 'name' => '标哥的技术博客', 'site' => 'www.huangyibiao.com', ); // 标哥的技术博客,www.huangyibiao.com echoimplode(",", $arr);

implode与explode函数相对,都是非常常用的函数!

格式化写入文件

功能:fprintf(stream,format,arg1,arg2,arg++) 函数把格式化的字符串写入指定的输出流(例如:文件或数据库)。arg1、arg2、arg++ 参数将被插入主字符串中的百分号(%)符号处。该函数是逐步执行的。在第一个 % 符号处,插入 arg1,在第二个 % 符号处,插入 arg2,依此类推。

返回值:返回最终格式化后的字符串长度值!

$site = 'www.huangyibiao.com'; $str = '标哥的技术博客'; // w代表写入,先打开文件 $file = fopen('b.txt', 'w'); // 73 echofprintf($file, "标哥网站名称:%s,域名:%s", $str, $site); fclose($file); 预定义字符转换为HTML实体

功能:htmlspecialchars(string,flags,character-set,double_encode)

预定义的字符是:

& (和号)成为 & (双引号)成为 ‘ (单引号)成为 ’ < (小于)成为 < > (大于)成为 >

flags可选。规定如何处理引号、无效的编码以及使用哪种文档类型。 可用的引号类型:

ENT_COMPAT 默认。仅编码双引号。 ENT_QUOTES 编码双引号和单引号。 ENT_NOQUOTES 不编码任何引号。 $str = "Bill & 'Steve'"; echohtmlspecialchars($str, ENT_COMPAT); // 只转换双引号 echo "<br>"; echohtmlspecialchars($str, ENT_QUOTES); // 转换双引号和单引号 echo "<br>"; echohtmlspecialchars($str, ENT_NOQUOTES); // 不转换任何引号 $str = 'I love "PHP".'; echohtmlspecialchars($str, ENT_QUOTES); // 转换双引号和单引号

最常用的就是CMS系统中,将富文本内容存入到数据库,而到前端显示时需要调用htmlspecialchars函数将内容转换一下才能正常显示,否则会出现一些问题!

字符串大小写转换相关

功能:lcfirst(string) 将字符串的首字母转为小写。lc是lower case的缩写!

相关函数:

strtolower() 把字符串转换为小写 strtoupper() 把字符串转换为大写 ucfirst() 把字符串中的首字符转换为大写 ucwords() 把字符串中每个单词的首字符转换为大写 移除左右侧指定字符

功能:ltrim(string,charlist)将字符串左侧的特定字符!

charlist是可选的,规定从字符串中删除哪些字符。如果省略该参数,则移除下列所有字符:

\0 NULL \t 制表符 \n 换行 \x0B 垂直制表符 \r 回车 “ ” 空格

相关函数,用法一样:

rtrim() 移除字符串右侧的空白字符或其他预定义字符 trim() 移除字符串两侧的空白字符或其他预定义字符 md5

功能: md5(string,raw)函数计算字符串的 MD5 散列。raw规定十六进制或二进制输出格式:TRUE 原始16字符二进制格式。FALSE 默认。32字符十六进制数

这个函数是非常常用的,用于计算摘要!

md5_file

功能:md5_file(file,raw)与md5函数一样的用法,只是用于文件计算摘要而已!

$filename = "test.txt"; $md5file = md5_file($filename); parse_str

功能:parse_str(string, array)规定要解析的字符串。array可选。规定存储变量的数组的名称。该参数指示变量将被存储到数组中。

parse_str("name=Bill&age=60"); echo $name."<br>"; echo $age; parse_str("name=Bill&age=60",$myArray); print_r($myArray);

这两种用法是一样的,这个函数很强大,用于解析URL参数就很方便了!

sha1、sha1_file

功能:sha1(string,raw)、sha1_file(string, raw),与md5使用类似!

sscanf/sprintf

功能:sscanf(string,format,arg1,arg2,arg++)与C中的scanf函数一样用法!arg = sprintf(format,arg1,arg2,arg++),与C中的printf差不多!

$str = "age:30 weight:60kg"; sscanf($str,"age:%d weight:%dkg",$age,$weight); // 显示类型和值 var_dump($age,$weight); $number = 2; $str = "Shanghai"; $txt = sprintf("There are %u million cars in %s.",$number,$str); echo $txt; str_split

功能:str_split(string,length)函数用于将字符串分割到数组中!length可选,规定每个数组元素的长度。默认是1。

// Array ( [0] => Sha [1] => ngh [2] => ai ) print_r(str_split("Shanghai",3)); 计算字符串的单词数

功能:str_word_count(string,return,char) return可选。规定 str_word_count() 函数的返回值。

可能的值:

0 默认。返回找到的单词的数目。 1 返回包含字符串中的单词的数组。 2 返回一个数组,其中的键名是单词在字符串中的位置,键值是实际的单词。 // 3 print_r(str_word_count("I love Shanghai!",0)); // Array ( [0] => I [1] => love [2] => Shanghai ) print_r(str_word_count("I love Shanghai!",1)); // Array ( [0] => I [2] => love [7] => Shanghai ) print_r(str_word_count("I love Shanghai!",2)); 字符串比较

功能:strcasecmp(string1,string2)不区分大小写比较。

返回值:

0 如果两个字符串相等 <0

Viewing all articles
Browse latest Browse all 12749