PHP函数说明之字符串函数
addcslashes(以 C 语言风格使用反斜线转义字符串中的指定字符)
1. 作用
以 C 语言风格使用反斜线转义字符串中的指定字符
2. 参数及返回值说明
addcslashes ( string $str , string $charlist ) : string
- 参数
str:要转义的字符。
charlist:需要转义的字符串列表;
- 返回值
返回字符串,该字符串在属于参数 charlist 列表中的字符前都加上了反斜线。
3. 使用场景注意事项
字符输出格式转场景时使用
4. 注意事项
- 如果 charlist 中包含有 \n,\r 等字符,将以 C 语言风格转换,而其它非字母数字且 ASCII 码低于 32 以及高于 126 的字符均转换成使用八进制表示。
- 当定义 charlist 参数中的字符序列时,需要确实知道介于自己设置的开始及结束范围之内的都是些什么字符
- 当选择对字符 0,a,b,f,n,r,t 和 v 进行转义时需要小心,它们将被转换成 \0,\a,\b,\f,\n,\r,\t 和 \v。在 PHP 中,只有 \0(NULL),\r(回车符),\n(换行符)和 \t(制表符)是预定义的转义序列, 而在 C 语言中,上述的所有转换后的字符都是预定义的转义序列
- 如果设置范围中的结束字符 ASCII 码高于开始字符,则不会创建范围,只是将开始字符、结束字符以及其间的字符逐个转义。可使用 ord() 函数获取字符的 ASCII 码值。
5. 使用实例
<?php
//范围替换
$str = "sdfghjkl678904567890-;[.]/r";
echo addcslashes($str,'A..z')."</br>"; // 输出:\s\d\f\g\h\j\k\l678904567890-;\[.\]
//替换指定字符
echo addcslashes($str, 'd')."</br>"; //输出: s\dfghjkl678904567890-;[.]
//替换特殊字符
echo addcslashes($str, '0tdvfbnrtv'); //输出:s\d\fghjkl6789\0456789\0-;[.]/\r
addslashes(使用反斜线引用字符串使用反斜线引用字符串)
1. 作用
使用反斜线引用字符串
2. 参数及返回值说明
addslashes ( string $str ) : string
- 参数
str: 需要转义的字符或字符串。
- 返回值
返回转义后的字符串
3. 使用场景注意事项
当你要往数据库中写入数据时。 例如,将字符串"Hi,it’s my sister"插入到数据库中时,这就需要对【’】进行转义。 强烈建议使用 DBMS 指定的转义函数 (比如 MySQL 是 mysqli_real_escape_string(),PostgreSQL 是 pg_escape_string()),但是如果你使用的 DBMS 没有一个转义函数,并且使用 \ 来转义特殊字符,你可以使用这个函数。
4. 使用实例
<?php
$str = "Hi,it's my sister!";
echo addslashes($str); //输出:Hi,it\'s my sister!
bin2hex(二进制的参数 str 转换为的十六进制的字符串)
1. 作用
把二进制的参数 str 转换为的十六进制的字符串。转换使用字节方式,高四位字节优先。
2. 参数及返回值说明
bin2hex ( string $str ) : string
- 参数
str:要转换的字符串。
- 返回值
返回指定字符串十六进制的表示
3. 使用场景注意事项
字符输出格式转场景时使用
4. 使用实例
<?php
$str = "hello world";
echo bin2hex($str)."</br>"; //输出:68656c6c6f20776f726c64
echo pack('H*',bin2hex($str)); //输出:hello world
rtrim(该函数删除 字符串末端的空白字符)
1. 作用
该函数删除 字符串末端的空白字符(或者其他字符)并返回
2. 参数及返回值说明
rtrim ( string $str [, string $character_mask ] ) : string
- 参数
str:需要处理的字符串。
**character_mask **:可选,需要删除的字符;
- 返回值
返回删除末端空白字符的字符串。
3. 使用场景注意事项
- 删除字符串末端的空白字符或自定字符
字符输出格式转场景时使用
4. 注意事项
- 不使用第二个参数,rtrim() 仅删除以下字符:
" " (ASCII 32 (0x20)),普通空白符。
“\t” (ASCII 9 (0x09)),制表符。
“\n” (ASCII 10 (0x0A)),换行符。
“\r” (ASCII 13 (0x0D)),回车符。
“\0” (ASCII 0 (0x00)),NUL 空字节符。
“\x0B” (ASCII 11 (0x0B)),垂直制表符。
5. 使用实例
<?php
$str = "hello world ";
echo strlen($str)."</br>"; //输出字符串长度:12
$str = rtrim($str);
echo $str."</br>";//输出 hello world
echo strlen($str); //输出字符串长度:11
chr-- 返回指定的字符
1. 作用
把二进制的参数 str 转换为的十六进制的字符串。转换使用字节方式,高四位字节优先。
2. 参数及返回值说明
bin2hex ( string $str ) : string
- 参数
str:要转换的字符串。
- 返回值
返回指定字符串十六进制的表示
3. 使用场景注意事项
字符输出格式转场景时使用
4. 使用实例
<?php
$str = "hello world";
echo bin2hex($str)."</br>"; //输出:68656c6c6f20776f726c64
echo pack('H*',bin2hex($str)); //输出:hello world
chr — 返回相对应于 ascii 所指定的单个字符
1. 作用
返回相对应于 ascii 所指定的单个字符。
2. 参数及返回值说明
chr ( int $ascii ) : string
- 参数
**ascii **:ascii码。
- 返回值
返回相对应于 ascii 所指定的单个字符。
3.使用实例
<?php
echo chr(123); //输出 "{"
echo chr(68); //输出 "D"
echo chr(15); // 如果传入值没有对应的字符则返回 控制符串 ""
/*-----------------------------------*/
$str = "The string ends in escape: ";
$str .= chr(65); /* 在 $str 后边增加字符'A' */
echo $str; // 输出:The string ends in escape: A
/* 通常这样更有用 */
$str = sprintf("The string ends in escape: %c", 65);
echo $str; //输出 The string ends in escape: A
chunk_split — 将字符串分割成小块
1. 作用
使用此函数将字符串分割成小块非常有用,会在每 chunklen 个字符后边插入 end。
2. 参数及返回值说明
chunk_split ( string $body [, int $chunklen = 76 [, string $end = "\r\n" ]] ) : string
- 参数
**body **:需要分割的字符串。
chunklen:分割长度
**end **:每段尾部插入字符;默认"\r\n"
- 返回值
返回分割后的字符串。
3.使用实例
<?php
$str = "AAAAAAAAAASDKJFHJKSALHFKJSAHFJKHAJSKJSFHNJKSAHFJKHASJKFHSAJKHFJKASHBFJKSAHFJKASHFKJASHFJK";
/**
输出:
"AAAAAAAAAA
SDKJFHJKSA
LHFKJSAHFJ
KHAJSKJSFH
NJKSAHFJKH
ASJKFHSAJK
HFJKASHBFJ
KSAHFJKASH
FKJASHFJK"
*/
echo chunk_split($str, 10);
echo chunk_split($str,10,'|'); //AAAAAAAAAA|SDKJFHJKSA|LHFKJSAHFJ|KHAJSKJSFH|NJKSAHFJKH|ASJKFHSAJK|HFJKASHBFJ|KSAHFJKASH|FKJASHFJK|
?>
convert_uuencode — 使用 uuencode 编码一个字符串
1. 作用
使用 uuencode 算法对一个字符串进行编码。uuencode 算法会将所有(含二进制数据)字符串转化为可输出的字符, 并且可以被安全的应用于网络传输。使用 uuencode 编码后的数据 将会比源数据大35%左右
2. 参数及返回值说明
convert_uuencode ( string $data ) : string
- 参数
data:需要被编码的数据
- 返回值
返回 uuencode 编码后的数据 或者在失败时返回 FALSE。
3.使用实例
<?php
/* 你猜会输出啥?:) */
$some_string = "my name is kim";
/**
* 输出
* 0=&5S=`IT97AT('1E>'0-"@``
`
*/
$result = convert_uuencode($some_string);
echo convert_uudecode($result); //my name is kim
?>
convert_uudecode — 解码一个 uuencode 编码的字符串
1. 作用
解码一个uuencode 编码的字符串, convert_uuencode的逆反过程
2. 参数及返回值说明
convert_uudecode ( string $data ) : string
- 参数
data:uuencode 编码后的数据
- 返回值
返回解码后的字符串数据, 或者在失败时返回 FALSE.
3.使用实例
<?php
/* 你猜会输出啥?:) */
$some_string = "my name is kim";
/**
* 输出
* 0=&5S=`IT97AT('1E>'0-"@``
`
*/
$result = convert_uuencode($some_string);
echo convert_uudecode($result); //my name is kim
?>
count_chars — 返回字符串所用字符的信息
1. 作用
统计 string 中每个字节值(0…255)使用信息。
2. 参数及返回值说明
count_chars ( string $string [, int $mode = 0 ] ) : mixed
- 参数
string:需要统计的字符串。
mode:统计模式
- 返回值
根据不同的 mode,count_chars() 返回下列不同的结果:
0 - 以所有的每个字节值作为键名,出现次数作为值的数组。
1 - 与 0 相同,但只列出出现次数大于零的字节值。
2 - 与 0 相同,但只列出出现次数等于零的字节值。
3 - 返回由所有使用了的字节值组成的字符串。
4 - 返回由所有未使用的字节值组成的字符串。
3.使用实例
<?php
$str = "hi,my name is jim. my old is 15";
$result0 = count_chars($str,0);
/**
*当 mode = 0时输出
=>7
,=>1
.=>1
1=>1
5=>1
a=>1
d=>1
e=>1
h=>1
i=>4
j=>1
l=>1
m=>4
n=>1
o=>1
s=>2
y=>2
*/
foreach ($result1 as $ascii => $value){
echo chr($ascii) .'=>' . $value."\n";
}
$result1 = count_chars($str,1);
/**
* 当mode=1时,输出
=>7
,=>1
.=>1
1=>1
5=>1
a=>1
d=>1
e=>1
h=>1
i=>4
j=>1
l=>1
m=>4
n=>1
o=>1
s=>2
y=>2
*/
foreach ($result1 as $ascii => $value){
echo chr($ascii) .'=>' . $value."\n";
}
$result2 = count_chars($str,2);
/**
*
* 当mode = 2时,输出:
* =>0
╔=>0
╗=>0
╚=>0
╝=>0
║=>0
═=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
>0
=>0
=>0
=>0
=>0
!=>0
"=>0
#=>0
$=>0
%=>0
&=>0
'=>0
(=>0
)=>0
*=>0
+=>0
-=>0
/=>0
0=>0
2=>0
3=>0
4=>0
6=>0
7=>0
8=>0
9=>0
:=>0
;=>0
<=>0
==>0
>=>0
?=>0
@=>0
A=>0
B=>0
C=>0
D=>0
E=>0
F=>0
G=>0
H=>0
I=>0
J=>0
K=>0
L=>0
M=>0
N=>0
O=>0
P=>0
Q=>0
R=>0
S=>0
T=>0
U=>0
V=>0
W=>0
X=>0
Y=>0
Z=>0
[=>0
\=>0
]=>0
^=>0
_=>0
`=>0
b=>0
c=>0
f=>0
g=>0
k=>0
p=>0
q=>0
r=>0
t=>0
u=>0
v=>0
w=>0
x=>0
z=>0
{=>0
|=>0
}=>0
~=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
=>0
*/
foreach ($result2 as $ascii => $value){
echo chr($ascii) .'=>' . $value."\n";
}
$result3 = count_chars($str,3);
echo $result3."\n"; //mode = 3 时,输出:" ,.15adehijlmnosy"
/**
* mode = 4时,输出:" ╔╗╚╝║═
2346789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`bcfgkpqrtuvwxz{|}~"
*/
$result4 = count_chars($str,4); //实际返回ascii码字符,未出现在输入字符串中的字符组成的字符串
echo $result4."\n";
?>
注意:实例中当mode=0,1,2时,该函数返回格式实际是[ascii => 次数]的数组,为了展示方便,将对应的ascii转为了对应的字符显示。