字符串函数是 PHP 核心的组成部分。无需安装即可使用这些函数。
联系了部分函数,有空的时候在练习一下剩下的其他函数
addcslashes()
:返回在指定字符前添加反斜杠的字符串
addcslashes — 以 C 语言风格使用反斜线转义字符串中的字符
addcslashes ( string $str , string $charlist ) : string
返回字符串,该字符串在属于参数 charlist 列表中的字符前都加上了反斜线。
<?php
echo addcslashes('foo[ ]', 'f..h');
addslashes()
:返回在预定义的字符前添加反斜杠的字符串。
在网上找到的注释
提示:该函数可用于为存储在数据库中的字符串以及数据库查询语句准备字符串。
注释:默认地,PHP 对所有的 GET、POST 和 COOKIE 数据自动运行 addslashes()。所以您不应对已转义过的字符串使用 addslashes(),因为这样会导致双层转义。遇到这种情况时可以使用函数 get_magic_quotes_gpc() 进行检测。
注意:返回字符串,该字符串为了数据库查询语句等的需要在某些字符前加上了反斜线。这些字符是单引号(’)、双引号(”)、反斜线(\)与 NUL(NULL 字符)。一个使用 addslashes() 的例子是当你要往数据库中输入数据时。 例如,将名字 O’reilly 插入到数据库中,这就需要对其进行转义。 强烈建议使用 DBMS 指定的转义函数 (比如 MySQL 是 mysqli_real_escape_string(),PostgreSQL 是 pg_escape_string()),但是如果你使用的 DBMS 没有一个转义函数,并且使用 \ 来转义特殊字符,你可以使用这个函数。 仅仅是为了获取插入数据库的数据,额外的 \ 并不会插入。 当 PHP 指令 magic_quotes_sybase 被设置成 on 时,意味着插入 ‘ 时将使用 ‘ 进行转义。
bin2hex — 函数把包含数据的二进制字符串转换为十六进制值
hex2bin — 函数把包含数据的十六进制字符串转换为二进制值
e.g.bin2hex ( string $str ) : string
<?php
$data = "你好世界!欢迎来到php学习课堂";
$res = bin2hex($data);
echo '这是数据原始形式=======>'.$data.'<br>';
echo '这是通过字符串函数bin2hex()进行十六进制编码后的形式=======>'.$res;
chop
函数是rtrim
函数的别名,作用与rtrim函数是相同的,删除字符串右边的空格或其他预定义字符,语法是chop(string,charlist)
,返回经过charlist
规则处理后的字符串
所以,我们将chop、rtrim、trim、ltrim同时进行演示!
<?php
echo '使用chop去除右侧空格';
$i = " hello world ";
echo "未经过处理的".$i."右边是有空格的!";
$j = chop($i);
echo "经过处理的".$j."右边是没有空格的!";
echo '<hr>';
echo '使用rtrim去除右侧空格';
echo "未经过处理的".$i."右左边是有空格的!";
$j = rtrim($i);
echo "经过处理的".$j."右边是没有空格的!";
echo '<hr>';
echo '使用ltrim去除左侧空格';
echo "未经过处理的".$i."左边是有空格的!";
$j = ltrim($i);
echo "经过处理的".$j."左边是没有空格的!";
echo '<hr>';
echo '使用trim去除前后空格';
echo "未经过处理的".$i."前后是有空格的!";
$j = trim($i);
echo "经过处理的".$j."前后是没有空格的!";
作用:从指定的 ASCII 值返回字符。
首先我们上传一个ASCII码的图表
我们想通过进制的方式打印图形或字符串,我们找到对应进制的代码即可。例如,我们要求输出的是@
。代码就应该是
<?php
echo chr(64) . "<br>"; // 十进制
echo chr(0100) . "<br>"; // 八进制值(八进制默认前面需要有0进行占位)
echo chr(0x40) . "<br>"; // 十六进制值(十六进制默认前面需要有0x进行占位)
对照ASCII图表我们可以看到,我们输出的结果都是@
,都正确了!
chunk_split
— 将字符串分割成小块
chunk_split ( string $body [, int $chunklen = 76 [, string $end = “\r\n” ]] ) : string
使用此函数将字符串分割成小块非常有用。例如将 base64_encode() 的输出转换成符合 RFC 2045 语义的字符串。它会在每 chunklen 个字符后边插入 end。
<?php
$str = "Hello php.cn!";
echo chunk_split($str,3,"...");
//chunk_split(需要修改的字符串,步数,"代替的字符");
convert_cyr_string
— 将字符由一种 Cyrillic 字符转换成另一种
convert_cyr_string ( string $str , string $from , string $to ) : string
此函数将给定的字符串从一种 Cyrillic 字符转换成另一种,返回转换之后的字符串。支持的类型有:
k - koi8-r
w - windows-1251
i - iso8859-5
a - x-cp866
d - x-cp866
m - x-mac-cyrillicm - x-mac-cyrillic
<?php
$str = "Hello world! ???";
echo $str . "<br>";
echo convert_cyr_string($str,'w','m');
//字符串由'w'-windos-251 转换为'm'-x-mac-cyrillicm
convert_uudecode
— 解码一个 uuencode 编码的字符串convert_uuencode
— 使用 uuencode 编码一个字符串
<?php
$some_string = "我爱php";
echo convert_uuencode($some_string);
$a = convert_uuencode($some_string);
echo '<br>';
echo convert_uudecode($a);
count_chars
— 返回字符串所用字符的信息
count_chars ( string $string [, int $mode = 0 ] ) : mixed
<?php
$data = "Two Ts and one F.";
echo '在'.$data.'中'.'<br>';
foreach (count_chars($data, 1) as $i => $val) {
echo "\"" , chr($i) , "\"一共出现了 $val 次 在字符串data中.\n".'<br>';
}
类似于sha1()
和md5()
<?php
$checksum = crc32("这是一个传说.");
printf("%u\n", $checksum);
crypt
— 单向字符串散列
crypt ( string $str [, string $salt ] ) : string
<?php
$hashed_password = crypt('mypassword'); // 自动生成盐值
echo $hashed_password;
/* 你应当使用 crypt() 得到的完整结果作为盐值进行密码校验,以此来避免使用不同散列算法导致的问题。(如上所述,基于标准 DES 算法的密码散列使用 2 字符盐值,但是基于 MD5 算法的散列使用 12 个字符盐值。)*/
//下面代码为hash方式对结果进行比较!
if (hash_equals($hashed_password, crypt($user_input, $hashed_password))) {
echo "Password verified!";
}
explode
使用一个字符串分割另一个字符串,并以数组形式返回
explode ( string $delimiter , string $string [, int $limit ] ) : array
<?php
// 示例 1
$pizza = "piece1 piece2 piece3 piece4 piece5 piece6";
$pieces = explode(" ", $pizza);
echo $pieces[0]; // piece1
echo $pieces[1]; // piece2
echo '<br>';
// 示例 2
$data = "foo:*:1023:1000::/home/foo:/bin/sh";
list($user, $pass, $uid, $gid, $gecos, $home, $shell) = explode(":", $data);
echo $user; // foo
echo $pass; // *
get_html_translation_table
— 返回使用 htmlspecialchars() 和 htmlentities() 后的转换表
get_html_translation_table ([ int $table = HTML_SPECIALCHARS [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $encoding = ‘UTF-8’ ]]] ) : array
Note:
特殊字符可以使用多种转换方式。 例如: “ 可以被转换成 ", " 或者 ". get_html_translation_table() 返回其中最常用的。
<?php
var_dump(get_html_translation_table(HTML_ENTITIES, ENT_QUOTES | ENT_HTML5));
html_entity_decode — 把 HTML 实体转换为字符。
htmlentities — 将字符转换为 HTML 转义字符
<?php
$orig = "I'll \"walk\" the <b>dog</b> now";
$a = htmlentities($orig);
$b = html_entity_decode($a);
echo $a; // I'll "walk" the <b>dog</b> now
echo '<br>';
echo $b; // I'll "walk" the <b>dog</b> now