php中mb开头的函数,PHP字符串处理函数 区别 mb_ 系列函数

1.addcslashes以 C 语言风格使用反斜线转义字符串中的字符,它返回带有斜杠的字符串

addcslashes ( string $str , string $charlist )

str 要转义的字符串。

charlist 如果charlist中包含有 \n,\r 等字符,将以 C 语言风格转换,而其它非字母数字且 ASCII 码低于 32 以及高于 126 的字符均转换成使用八进制表示。当定义 charlist 参数中的字符序列时,需要确实知道介于自己设置的开始及结束范围之内的都是些什么字符。

echo addcslashes('Foo[ ]ccc\n', 'A..z');

输出: \F\o\o\[ \]\c\c\c\\\n

2.addslashes使用反斜线引用字符串,返回字符串,该字符串为了数据库查询语句等的需要在某些字符前加上了反斜线。这些字符是单引号(')、双引号(")、反斜线(\)与 NUL(NULL 字符)。

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

echo addslashes($str);

输出:Is your name O\"reilly?

3.chop - rtrim()的别名,删除字符串末端的空白字符(或者其他字符)

rtrim ( string $str [, string $character_mask ] )

str 输入的字符串

character_mask 通过指定 character_mask,可以指定想要删除的字符列表。简单地列出你想要删除的全部字符。使用 .. 格式,可以指定一个范围。如果不传入该参数,则函数默认删除如下字符

" " (ASCII 32 (0x20)),普通空白符。

"\t" (ASCII 9 (0x09)),制表符。

"\n" (ASCII 10 (0x0A)),换行符。

"\r" (ASCII 13 (0x0D)),回车符。

"\0" (ASCII 0 (0x00)),NUL 空字节符。

"\x0B" (ASCII 11 (0x0B)),垂直制表符。

$text = "\t\tThese are a few words :) ... "; string(32) " These are a few words :) ... "

$binary = "\x09Example string\x0A"; string(16) " Example string

"

$hello = "Hello World"; string(11) "Hello World"

chop($text); ===>string(30) " These are a few words :) ..."

chop($text, " \t.");===>string(26) " These are a few words :)"

chop($hello, "Hdle");===> string(9) "Hello Wor"

// 删除 $binary 末端的 ASCII 码控制字符

// (包括 0 - 31)

chop($binary, "\x00..\x1F");===> string(15) " Example string"

4.ltrim - 删除字符串开头的空白字符(或其他字符)

ltrim ( string $str [, string $character_mask ] )

$text = "\t\t这是一些词 :) ... ";

$trimmed = ltrim($text, " \t.");===>string(18) "这是一些词 :)"

gbk编码下一个中文占俩个字节 utf-8下一个中文占3个字节

5.chr函数返回指定ASCII码的字符,此函数与 ord() 是互补的。

chr ( int $ascii )

参数 ascii Ascii 码

$str = sprintf("The string ends in escape: %c", 37);

输出:The string ends in escape: %

$str = "ccccccc";

echo $str.chr(97); // 在字符串后添加一个a a的ASCII码为97

输出:ccccccca

6.chunk_split函数将字符串分割成小块。

chunk_split ( string $body [, int $chunklen = 76 [, string $end = "\r\n" ]] )

使用此函数将字符串分割成小块非常有用。例如将base64_encode()的输出转换成符合 RFC 2045 语义的字符串。它会在每chunklen 个字符后边插入end。

参数

参数 必需的 描述

body 是 要分割的字符。

chunklen 否 分割的尺寸。默认值76。

end 否 行尾序列符号。默认值"\r\n"

$data = 'abc';

$base64str = base64_encode($data);

输出: YWJj

$new_string = chunk_split($base64str,2,'--');

echo $new_string;

输出:YW--Jj--

7.convert_cyr_string函数将字符由一种 Cyrillic 字符转换成另一种。

提示:此函数可安全用于二进制对象。

convert_cyr_string ( string $str , string $from , string $to )

参数 必需的 描述

str 是 要转换的字符。

from 是 单个字符,代表源 Cyrillic 字符集。

to 是 单个字符,代表了目标 Cyrillic 字符集。

支持的字符集类型有

k - koi8-r

w - windows-1251

i - iso8859-5

a - x-cp866

d - x-cp866

m - x-mac-cyrillic

8.convert_uuencode函数编码一个 uuencode 编码的字符串

echo convert_uuencode("hello world!");

输出:+:&5L;&\@=V]R;&0`

`

9.convert_uudecode函数解码一个 uuencode 编码的字符串

echo convert_uudecode("&Y+V@Y:6]

`");

输出:你好

`

10.count_chars函数返回字符串所用字符的信息

count_chars ( string $string [, int $mode = 0 ] )

参数 必需的 描述

string 是 需要统计的字符串。

mode 否 参见返回的值。

返回值

根据不同的mode,count_chars() 返回下列不同的结果:

0 - 以所有的每个字节值作为键名,出现次数作为值的数组。

1 - 与 0 相同,但只列出出现次数大于零的字节值。

2 - 与 0 相同,但只列出出现次数等于零的字节值。

3 - 返回由所有使用了的字节值组成的字符串。

4 - 返回由所有未使用的字节值组成的字符串。

$str = "Hello World!";

echo count_chars($str,3); 参数 "mode 3" 会返回包含所有用过的不同字符的字符串。在本例中,在 "Hello World!" 中使用的字符是:

输出:" .FTadenosw"

11.crypt函数返回单向字符串散列

crypt ( string $str [, string $salt ] )

参数 必需的 描述

str 是 待散列的字符串。

salt 否 可选的盐值字符串。如果没有提供,算法行为将由不同的算法实现决定,并可能导致不可预料的结束。

返回值

返回散列后的字符串或一个少于 13 字符的字符串,从而保证在失败时与盐值区分开来。

注意 当校验密码时,应该使用一个不容易被时间攻击的字符串比较函数来比较crypt()的输出与之前已知的哈希。出于这个目的,PHP5.6开始提供了hash_equals()函数。

提示:password_hash()使用了一个强的哈希算法,来产生足够强的盐值,并且会自动进行合适的轮次。password_hash()是crypt()的一个简单封装,并且完全与现有的密码哈希兼容。推荐使用password_hash()。

// 设置密码

$password = 'mypassword';

// 获取散列值,使用自动盐值 //不加盐值 php>=5.6会有notice错误

$hash = crypt($password);

string(34) "$1$xMG7.bms$oMxKesg.E9pEuZRvGt4w/."

12.echo - 输出一个或多个字符串

注意 echo 不是一个函数(它是一个语言结构), 因此你不一定要使用小括号来指明参数,单引号,双引号都可以。 echo (不像其他语言构造)不表现得像一个函数, 所以不能总是使用一个函数的上下文。 另外,如果你想给echo 传递多个参数, 那么就不能使用小括号。echo 也有一个快捷用法,你可以在打开标记前直接用一个等号。在 PHP 5.4.0 之前,必须在php.ini里面启用short_open_tag才有效。例如:I have =$foo?> foo.

echo "a","b",'c'; abc

13.explode - 使用一个字符串分割另一个字符串

explode ( string $delimiter , string $string [, int $limit ] )

此函数返回由字符串组成的数组,每个元素都是 string 的一个子串,它们被字符串 delimiter 作为边界点分割出来。

参数 必需的 描述

delimiter 是 边界上的分隔字符。

string 是 输入的字符串。

limit 否 如果设置了 limit 参数并且是正数,则返回的数组包含最多 limit 个元素,而最后那个元素将包含 string 的剩余部分。如果 limit 参数是负数,则返回除了最后的 -limit 个元素外的所有元素。如果 limit 是 0,则会被当做 1。

返回值

此函数返回由字符串组成的数组,每个元素都是 string 的一个子串,它们被字符串 delimiter 作为边界点分割出来。如果 delimiter 为空字符串(""),explode() 将返回 FALSE。 如果 delimiter 所包含的值在 string 中找不到,并且使用了负数的 limit , 那么会返回空的数组, 否则返回包含 string 单个元素的数组。

$pizza = "piece1 piece2 piece3 piece4 piece5 piece6";

$pieces = explode(" ", $pizza);

print_r($pieces)

Array

(

[0] => piece1

[1] => piece2

[2] => piece3

[3] => piece4

[4] => piece5

[5] => piece6

)

14.implode - 将一个一维数组的值转化为字符串

join - 将一个一维数组的值转化为字符串,implode的别名

implode ( [string $glue ,] array $pieces )

用 glue 将一维数组(pieces)的值连接为一个字符串。

参数 必需的 描述

glue 否 默认为空的字符串。

pieces 是 你想要转换的数组。

返回值

返回一个字符串,其内容为由 glue 分割开的数组的值。

$array = array('lastname', 'email', 'phone');

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

echo $comma_separated; ===>lastname,email,phone

echo "
";

// 如果分割一个空数组,输出空字符串:

var_dump(implode('hello', array())); ===> string(0) ""

15.fprintf - 将格式化后的字符串写入到流

fprintf (resource $handle , string $format [, mixed $args [, mixed $... ]] )

写入一个根据 format 格式化后的字符串到 由 handle 句柄打开的流中。

参数 必需的 描述

handle 是 文件系统指针,是典型地由 fopen() 创建的 resource(资源)。

format 是 参见 sprintf() 中对 format 的描述。

args ... 否(取决format) 填写format中定义的占位符

返回值

返回写入的字符串长度。

if (!($fp = fopen('currency.txt', 'w'))) {

return;

}

$money1 = 68.75;

$money2 = 54.35;

$money = $money1 + $money2;

echo $money // 将输出 "123.1";

$len = fprintf($fp, '%01.2f', $money);

// 将写入 "123.10" 到 currency.txt

echo "写入 $len bytes 到 currency.txt";

// 使用fprintf的返回值来确定我们写入的字节数

16.hex2bin - 转换十六进制字符串为二进制字符串

提示:这个函数不是 转换十六进制数字为二进制数字。这种转换可以使用base_convert()函数。

hex2bin (string $data )

转换十六进制字符串为二进制字符串。

参数 必需的 描述

data 是 十六进制表示的数据

返回值

返回给定数据的二进制表示 或者在失败时返回 FALSE。

如果输入的十六进制字符串是奇数长数或者无效的十六进制字符串将会抛出 E_WARNING 级别的错误。

V5.5.1 - 如果输入的字符串是无效的十六进制字符串则抛出一个警告。

V5.4.4 - 如果输入的字符串有多余将抛出异常。 PHP 5.4.0 起字符串将被静默地接受,但是最后的字节会被截断。

$hex = hex2bin("68656c6c6f20776f726c64");

var_dump($hex); ===>string(11) "hello world"

17.bin2hex函数把包含数据的二进制字符串转换为十六进制值

bin2hex ( string $str )

参数 必需的 描述

str 是 二进制字符串。

返回值

返回指定字符串十六进制的表示。

$binary = "11111001";

$hex = hex2bin(bin2hex($binary));

echo $hex; ===>11111001

18.htmlspecialchars_decode - 将特殊的 HTML 实体转换回普通字符

htmlspecialchars_decode ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 ] )

此函数的作用和 htmlspecialchars() 刚好相反。它将特殊的HTML实体转换回普通字符。被转换的实体有: &, " (没有设置ENT_NOQUOTES 时), ' (设置了 ENT_QUOTES 时), < 以及>。

参数 必需的 描述

string 是 要解码的字符串

flags 否 以下一个或多个标志的位掩码,指定如何处理引号以及要使用的文档类型。 默认为ENT_COMPAT | ENT_HTML401。

ENT_COMPAT 将转换双引号并单独留下单引号。

ENT_QUOTES 将转换双引号和单引号。

ENT_NOQUOTES 将双引号和单引号保留为未转换。

ENT_HTML401 将代码处理为HTML 4.01。

ENT_XML1 将代码处理为XML 1。

ENT_XHTML 将代码处理为XHTML。

ENT_HTML5 将代码处理为HTML 5。

V5.4.0增加了 ENT_HTML401、ENT_XML1、 ENT_XHTML 和 ENT_HTML5 等常量。

返回值

返回解码后的字符串。

$str = "

this -> "


";

注意,这里的引号不会被转换

echo htmlspecialchars_decode($str, ENT_NOQUOTES); ===>

this -> "

echo htmlspecialchars_decode($str); ===>

this -> "

19.htmlspecialchars - 将特殊字符转换为 HTML 实体

htmlspecialchars (string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $encoding = ini_get("default_charset") [, bool $double_encode = TRUE ]]])

某类字符在 HTML 中有特殊用处,如需保持原意,需要用 HTML 实体来表达。 本函数会返回字符转义后的表达。 如需转换子字符串中所有关联的名称实体,使用 [htmlentities()]代替本函数。如果传入字符的字符编码和最终的文档是一致的,则用函数处理的输入适合绝大多数 HTML 文档环境。 然而,如果输入的字符编码和最终包含字符的文档是不一样的, 想要保留字符(以数字或名称实体的形式),本函数以及 htmlentities() (仅编码名称实体对应的子字符串)可能不够用。 这种情况可以使用 **mb_encode_numericentity()** 代替。

| 字符 | 替换后 |

| --- | --- |

| & (& 符号) | & |

| " (双引号) | ",除非设置了 ENT_NOQUOTES |

| ' (单引号) | 设置了 ENT_QUOTES 后, ' (如果是 ENT_HTML401) ,或者 ' (如果是 **ENT_XML1、 ENT_XHTML** 或 **ENT_HTML5**)。 |

| < (小于) | < |

| > (大于) | & |

注意,这里的引号会被转换

$new = htmlspecialchars("Test", ENT_QUOTES);

echo $new; // <a href='test'>Test</a>

20.lcfirst - 使一个字符串的第一个字符小写

lcfirst ( string $str )

$foo = 'HelloWorld';

$foo = lcfirst($foo); ===> helloWorld

21.ucfirst - 将字符串的首字母转换为大写

ucfirst ( string $str)

$foo = 'hello world!';

$foo = ucfirst($foo); ===> Hello world!

22.levenshtein - 计算两个字符串之间的编辑距离

可用于查找字符串数组中与输入字符最接近的字符串

levenshtein ( string $str1 , string $str2 )

// 输入拼写错误的单词

$input = 'carrrot';

// 要检查的单词数组

$words = array('apple','pineapple','banana','orange', 'radish','carrot','pea','bean','potato');

// 目前没有找到最短距离

$shortest = -1;

// 遍历单词来找到最接近的

foreach ($words as $word) {

// 计算输入单词与当前单词的距离

$lev = levenshtein($input, $word);

// 检查完全的匹配

if ($lev == 0) {

// 最接近的单词是这个(完全匹配)

$closest = $word;

$shortest = 0;

// 退出循环;我们已经找到一个完全的匹配

break;

}

// 如果此次距离比上次找到的要短

// 或者还没找到接近的单词

if ($lev <= $shortest || $shortest < 0) {

// 设置最接近的匹配以及它的最短距离

$closest = $word;

$shortest = $lev;

}

}

echo "输入的单词是: $input\n";

if ($shortest == 0) {

echo "精确匹配发现: $closest\n";

} else {

echo "你的意思是: $closest?\n";

}

输入的单词是: carrrot

你的意思是: carrot?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值