PHP函数参考24-常用字符串函数

本文内容较长,如有被截断或缺失,请参考原文:
PHP函数参考24-常用字符串函数 - 9ong
PHP函数参考25-常用数组函数 - 9ong

  • addslashes — 使用反斜线引用字符串

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

    注意:PHP 5.4 之前 PHP 指令 magic_quotes_gpc 默认是 on, 实际上所有的 GET、POST 和 COOKIE 数据都用被 addslashes() 了。 不要对已经被 magic_quotes_gpc 转义过的字符串使用 addslashes(),因为这样会导致双层转义。 遇到这种情况时可以使用函数 get_magic_quotes_gpc() 进行检测。

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

  • hex2bin — 转换十六进制字符串为二进制字符串

  • chop — rtrim 的别名

  • chr — 返回指定的字符

    返回相对应于 ascii 所指定的单个字符。

    此函数与 ord() 是互补的。

  • ord — 转换字符串第一个字节为 0-255 之间的值

  • convert_uuencode — 使用 uuencode 编码一个字符串

    convert_uuencode() 使用 uuencode 算法对一个字符串进行编码。

    uuencode 算法会将所有(含二进制数据)字符串转化为可输出的字符,并且可以被安全的应用于网络传输。使用 uuencode 编码后的数据将会比源数据大35%左右。

    用法同base64_encode,可以用于对二进制数据的编码。

  • convert_uudecode — 解码一个 uuencode 编码的字符串

  • count_chars — 返回字符串所用字符的信息

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

    统计 string 中每个字节值(0..255)出现的次数,使用多种模式返回结果。

    mode参数:

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

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

  • crc32 — 计算一个字符串的 crc32 多项式

    生成 str 的 32 位循环冗余校验码多项式。这通常用于检查传输的数据是否完整。

  • crypt — 单向字符串散列

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

  • echo — 输出一个或多个字符串

  • explode — 使用一个字符串分割另一个字符串

  • implode — 将一个一维数组的值转化为字符串

    explode与implode目前尽量按照分割符参数在前,字符串或数组在后

    注意:implode第一个参数分隔符可以忽略,也就是只有一个参数数组时,会默认使用空字符作为分隔符连接字符串。

    implode( string $glue, array $pieces) : string
    
    implode( array $pieces) : string
    

    注意:join函数是implode的别名

  • get_html_translation_table — 返回使用 htmlspecialchars 和 htmlentities 后的转换表

    返回 htmlspecialchars() 和 htmlentities() 处理后的转换表。

在很多自有框架中,我们常会看到内部都有一个函数是用于手动替换html特殊符号的,其实php自身带了一个函数可以提供html特殊符号的函数,不需要我们手动保存更新:

```php
print_r(get_html_translation_table(HTML_ENTITIES,ENT_COMPAT|ENT_QUOTES));    
```
```php
Array
(
    ["] => "
    [&] => &
    ['] => '
    [<] => &lt;
    [>] => &gt;
    [ ] => &nbsp;
    [¡] => &iexcl;
    [¢] => &cent;
    [£] => &pound;
    [¤] => &curren;
    [¥] => &yen;
    [¦] => &brvbar;
    [§] => &sect;
    [¨] => &uml;
    [©] => &copy;
    [ª] => &ordf;
    [«] => &laquo;
    [¬] => &not;
    ...
```
  • htmlentities — 将字符转换为 HTML 转义字符

    本函数各方面都和 htmlspecialchars() 一样,除了 htmlentities() 会转换所有具有 HTML 实体的字符。

  • html_entity_decode — Convert HTML entities to their corresponding characters

    htmlentities 的反向解码操作。

  • htmlspecialchars — 将特殊字符转换为 HTML 实体

    通过get_html_translation_table函数可以知道,只有5个特殊符号被定义为htmlspecialchars:

    
    ["] => &quot;
    [&] => &amp;
    ['] => &#039;
    [<] => &lt;
    [>] => &gt;
    
  • htmlspecialchars_decode — 将特殊的 HTML 实体转换回普通字符

    htmlspecialchars的反向解析操作。

  • lcfirst — 使一个字符串的第一个字符小写

  • ucfirst — 将字符串的首字母转换为大写

  • ucwords — 将字符串中每个单词的首字母转换为大写

    ucwords( string $str[, string $delimiters = " \t\r\n\f\v" ] ) : string
    

    可选的 delimiters,包含了单词分割字符。

    $foo = 'hello|world!';
    $bar = ucwords($foo);             // Hello|world!
    
    $baz = ucwords($foo, "|");        // Hello|World!
    
  • levenshtein — 计算两个字符串之间的编辑距离

  • md5_file — 计算指定文件的 MD5 散列值

  • md5 — 计算字符串的 MD5 散列值

    由于此函数依赖的算法已不足够复杂,不推荐使用此函数对明文密码加密。如果用于创建密码哈希值,建议使用password_hash() - 创建密码的散列(hash)

  • metaphone — 计算str的变音键

    与soundex()类似,metaphone为发音相似的单词创建相同的键。它比soundex()更准确,因为它知道英语发音的基本规则。变音位生成的键是可变长度的。

  • money_format — 将数字格式化成货币字符串

  • nl2br — 在字符串所有新行之前插入 HTML 换行标记

    在字符串 string 所有新行之前插入 '<br />' 或 '<br>',并返回。
    可以理解为将\r\n替换成html换行标签<br />

  • number_format — 以千位分隔符方式格式化一个数字

  • parse_str — 将字符串解析成多个变量

    parse_str( string $encoded_string[, array &$result] ) : void
    

    如果 encoded_string 是 URL 传递入的查询字符串(query string),则将它解析为变量并设置到当前作用域(如果提供了 result 则会设置到该数组里 )。

    注意:我们强烈建议一定要带第二个参数result,变量将会以数组元素的形式存入到这个数组。该函数没有返回值,将由result作为替代

    $str = "first=value&arr[]=foo+bar&arr[]=baz";
    
    // 推荐用法
    parse_str($str, $output);
    echo $output['first'];  // value
    echo $output['arr'][0]; // foo bar
    echo $output['arr'][1]; // baz
    
    // 不建议这么用
    parse_str($str);
    echo $first;  // value
    echo $arr[0]; // foo bar
    echo $arr[1]; // baz
    
  • print — 输出字符串

    print 实际上不是函数(而是语言结构),所以可以不用圆括号包围参数列表。

    和 echo 最主要的区别: print 仅支持一个参数,并总是返回 1。

    还是用echo吧。

  • printf — 输出格式化字符串

  • sprintf — 输出格式化字符串

    可以理解为模板化输出。

    $num = 5;
    $location = 'tree';
    
    $format = 'There are %d monkeys in the %s';
    echo sprintf($format, $num, $location);//There are 5 monkeys in the tree
    

    更多模板格式化符号详见官方文档。

  • quotemeta — 转义元字符集

    返回 在下面这些特殊字符前加 反斜线() 转义后的字符串。这些特殊字符包含:

    . \ + * ? [ ^ ] ( $ )

  • setlocale — 设置地区信息

  • sha1 — 计算字符串的 sha1 散列值

    由于此函数依赖的算法已不足够复杂,不推荐使用此函数对明文密码加密。

  • sha1_file — 计算文件的 sha1 散列值
    与md5_file相似,但算法不一样。该散列值是一个 40 字符长度的十六进制数字。 md5_file返回32字符长度的16进制数字。

  • similar_text — 计算两个字符串的相似度

    两个字符串的相似程度计算依据 Programming Classics: Implementing the World's Best Algorithms by Oliver (ISBN 0-131-00413-1) 的描述进行。注意该实现没有使用 Oliver 虚拟码中的堆栈,但是却进行了递归调用,这个做法可能会导致整个过程变慢或变快。也请注意,该算法的复杂度是 O(N**3),N 是最长字符串的长度。

    similar_text( string $first, string $second[, float &$percent] ) : int
    

    通过引用方式传递第三个参数,similar_text() 将计算相似程度百分数。

    注意:返回值是两个字符串中匹配字符的数目。而我们通常要的是相似度百分数,也就是第三个参数percent。

  • soundex — Calculate the soundex key of a string

    Soundex键具有发音相似的单词会产生相同的Soundex键的属性,因此可以用来简化在你知道发音但不知道拼写的数据库中的搜索。这个soundex函数返回一个以字母开头的4个字符的字符串。

  • sscanf — 根据指定格式解析输入的字符

  • str_getcsv — 解析 CSV 字符串为一个数组

    以 CSV 字段格式解析字符串输入,并返回包含读取字段的数组。

  • str_replace — 子字符串替换

    str_replace( mixed $search, mixed $replace, mixed $subject[, int &$count] ) : mixed
    

    如果 search 和 replace 为数组,那么 str_replace() 将对 subject 做二者的映射替换。如果 replace 的值的个数少于 search 的个数,多余的替换将使用空字符串来进行。如果 search 是一个数组而 replace 是一个字符串,那么 search 中每个元素的替换将始终使用这个字符串。该转换不会改变大小写。

    如果 search 和 replace 都是数组,它们的值将会被依次处理。

    $phrase  = "You should eat fruits, vegetables, and fiber every day.";
    $healthy = ["fruits", "vegetables", "fiber"];
    $yummy   = ["pizza", "beer", "ice cream"];
    
    $newphrase = str_replace($healthy, $yummy, $phrase);
    print_r($newphrase);//You should eat pizza, beer, and ice cream every day
    

    如果search和replace参数都是数组的时候,需要注意一个先后查找替换问题,一个特殊的范例:

    $letters = array('a', 'p');
    $fruit   = array('apple', 'pear');
    $text    = 'a p';
    $output  = str_replace($letters, $fruit, $text);
    echo $output;
    // 由于先查找了字符a,替换成apple,之后再查找字符p,再将替换后的apple的两个p字符又替换成pear
    // 输出: apearpearle pear
    
  • str_ireplace — str_replace 的忽略大小写版本

  • str_pad — 使用另一个字符串填充字符串为指定长度

    str_pad( string $input, int $pad_length[, string $pad_string = " "[, int $pad_type = STR_PAD_RIGHT]] ) : string
    

    支持左右填充指定字符,并指定长度,默认STR_PAD_RIGHT向右填充。

    注意:如果填充字符的长度不能被 pad_string 整除,那么 pad_string 可能会被缩短。

    官方范例:

    $input = "Alien";
    echo str_pad($input, 10);                      // 输出 "Alien     "
    echo str_pad($input, 10, "-=", STR_PAD_LEFT);  // 输出 "-=-=-Alien"
    echo str_pad($input, 10, "_", STR_PAD_BOTH);   // 输出 "__Alien___"
    echo str_pad($input,  6, "___");               // 输出 "Alien_"
    echo str_pad($input,  3, "*");                 // 输出 "Alien"
    
  • str_repeat — 重复一个字符串

    str_repeat( string $input, int $multiplier) : string
    

    返回 字符串input 重复 multiplier 次后的结果字符串。

    echo str_repeat("-=", 5);
    //-=-=-=-=-=
    
  • str_rot13 — 对字符串执行 ROT13 转换

    在比较旧的php代码中我们也会看一些借鉴str_rot13的加密算法,可以用来混淆。可能混淆算法不一定采用之后的第13个字符替换法。

    ROT13 编码简单地使用字母表中后面第 13 个字母替换当前字母,同时忽略非字母表中的字符。编码和解码都使用相同的函数,传递一个编码过的字符串作为参数,将得到原始字符串。

    echo str_rot13("Tsing1");//Gfvat1
    
    echo str_rot13("Gfvat1");//Tsing1
    
    
  • str_shuffle — 随机打乱一个字符串

    每次返回都是随机的,不一样的字符串

  • str_split — 将字符串转换为数组

    将一个字符串转换为数组,如果第二个参数默认是1时,返回的就是字符数组,字符串的每个字符就是数组中的一个元素。

    第二参数是将返回的数组的每个元素的长度,比如设置为3,则返回的数组中的每个元素都是长度为3的字符串。

    $str = "Hello Friend";
    
    $arr1 = str_split($str);
    $arr2 = str_split($str, 3);
    
    //print_r($arr1);
    print_r($arr2);
    

    输出:

    Array
    (
        [0] => Hel
        [1] => lo
        [2] => Fri
        [3] => end
    )
    
  • str_word_count — 返回字符串中单词的使用情况

  • strcmp — 二进制安全字符串比较

    如果 str1 小于 str2 返回 < 0;如果 str1 大于 str2 返回 > 0;如果两者相等,返回 0。

    注意:该函数不是人习惯的自然排序算法,可以考虑使用strnatcmp的字符串比较函数。

  • strcasecmp — 二进制安全比较字符串(不区分大小写)

  • strncmp — 二进制安全比较字符串开头的若干个字符

  • strncasecmp — 二进制安全比较字符串开头的若干个字符(不区分大小写)

  • strip_tags — 从字符串中去除 HTML 和 PHP 标记

    该函数尝试返回给定的字符串 str 去除空字符、HTML 和 PHP 标记后的结果。

    注意:由于 strip_tags() 无法实际验证 HTML,不完整或者破损标签将导致更多的数据被删除。

  • stripslashes — 反转义一个使用类似使用addslashes 转义的字符串

  • strpos — 查找字符串首次出现的位置

    strpos( string $haystack, mixed $needle[, int $offset = 0] ) : int
    

    在字符串haystack中查找字符needle,返回needle在haystack中首次出现的数字位置。

    needle:建议一定要是字符串。

    offset:如果提供了此参数,搜索会从字符串该字符数的起始位置开始统计。如果是负数,搜索会从字符串结尾指定字符数开始。

返回 needle 存在于 haystack 字符串起始的位置(独立于 offset)。同时注意字符串位置是从0开始,而不是从1开始的。如果没找到 needle,将返回 FALSE。 

注意:strpos的参数顺序,和explode等其他字符串函数不大一样,strpos第一个参数是完整字符串,第二个参数needle是用于查找的子串或字符。
  • stripos — 查找字符串首次出现的位置(不区分大小写)

  • strrpos — 计算指定字符串在目标字符串中最后一次出现的位置

    注意:区别于strpos指定字符在目标字符串最后一次出现的位置。

  • strripos — 计算指定字符串在目标字符串中最后一次出现的位置(不区分大小写)

  • strstr — 查找字符串的首次出现,并返回第一次出现的位置开始到结尾的字符串

    strstr( string $haystack, mixed $needle[, bool $before_needle = FALSE] ) : string
    

    返回 haystack 字符串从 needle 第一次出现的位置开始到 haystack 结尾的字符串。

    注意:strchr函数是strstr的别名函数

    $url  = 'http://www.9ong.com';
    $domain = strstr($url, '//');
    echo $domain; // 输出://www.9ong.com
    
  • stristr — strstr 函数的忽略大小写版本

  • strrchr — 查找指定字符在字符串中的最后一次出现

    该函数返回 haystack 字符串中的一部分,这部分以 needle 的最后出现位置开始,直到 haystack 末尾。

    注意:该函数对应正向函数是strchr也就是strstr,如果strrchr函数的needle参数包含不止一个字符,仅使用第一个字符。该参数行为不同于strstr函数。

    注意:如果 needle 不是一个字符串,那么将被转化为整型并被视为字符顺序值。

    $nl = chr(10);//\n ASCII
    echo nl2br($nl);
    $text = "Line 1\nLine 2\nLine 3";
    $last = substr(strrchr($text, 10), 1 );
    echo $last;
    //输出:
    //<br />
    //Line 3
    
  • strlen — 获取字符串长度

  • strnatcmp — 使用自然排序算法比较字符串

    该函数实现了以人类习惯对数字型字符串进行排序的比较算法,这就是"自然顺序"。

    返回值:与其他字符串比较函数类似,如果 str1 小于 str2 返回 < 0;如果 str1 大于 str2 返回 > 0;如果两者相等,返回 0。

  • strnatcasecmp — 使用“自然顺序”算法比较字符串(不区分大小写)

  • strpbrk — 在字符串中查找一组字符的任何一个字符

    返回一个以找到的字符开始的子字符串。如果没有找到,则返回 FALSE。

  • strrev — 反转字符串

    hello反转后就是:olleh

  • strtok — 标记分割字符串

    返回值类似于一个迭代器。如果不熟悉使用方式,分割字符串建议使用explode、preg_split。注意:split已经不再建议使用,而str_split不支持指定分隔字符(串),是将字符串按单个字符分隔转换成字符数组。

    $string = "This is\tan example\nstring";
    /* 使用制表符和换行符作为分界符 */
    $tok = strtok($string, " \n\t");
    while ($tok !== false) {
        echo "Word=$tok\n";
        $tok = strtok(" \n\t");
    }
    

    输出:

    Word=This
    Word=is
    Word=an
    Word=example
    Word=string
    
  • strtolower — 将字符串转化为小写

  • strtoupper — 将字符串转化为大写

  • strtr — 转换指定字符,可用于实现字符串替换,类似于str_replace,但又更简洁实用

    函数支持两种方式:

    strtr( string $str, string $from, string $to) : string
    
    strtr( string $str, array $replace_pairs) : string
    

    该函数返回 str 的一个副本,并将在 from 中指定的字符转换为 to 中相应的字符。比如, from[n]中每次的出现都会被替换为 to[n],其中 $n 是两个参数都有效的字符串位移(offset),通俗点说就是字符串数组的下标。

    如果 from 与 to 长度不相等,那么多余的字符部分将被忽略。 str 的长度将会和返回的值一样。

    如果给出两个参数,第二个参数应该是array形式的数组('from' => 'to',…)。返回值是一个字符串,其中所有出现的数组键都被相应的值所替换。最长的键将首先尝试。一旦子字符串被替换,它的新值将不再被搜索,这个是有区别于str_replace前两个参数都是数组的形式,str_replace会有先后替换顺序。

    echo strtr("baab", "ab", "01"),"\n";
    
    $trans = array("ab" => "01");
    echo strtr("baab", $trans),"\n";
    
    $trans = array("a" => "apple","p"=>"pear");
    echo strtr("a p", $trans),"\n";
    
    echo str_replace(["a","p"], ["apple",'pear'], 'a p'),"\n";
    

    输出:

    1001
    ba01
    apple pear
    apearpearle pear
    
  • substr — 返回字符串的子串

    substr( string $string, int $start[, int $length] ) : string
    
    • start

      如果 start 是非负数,返回的字符串将从 string 的 start 位置开始,从 0 开始计算。例如,在字符串 "abcdef" 中,在位置 0 的字符是 "a",位置 2 的字符串是 "c" 等等。

      如果 start 是负数,返回的字符串将从 string 结尾处向前数第 start 个字符开始。

      如果 string 的长度小于 start,将返回 FALSE。

    • length

      如果没有提供 length,默认返回的子字符串将从 start 位置开始直到字符串结尾。

      如果提供了正数的 length,返回的字符串将从 start 处开始最多包括 length 个字符(取决于 string 的长度)。

      如果提供了负数的 length,那么 string 末尾处的 length 个字符将会被省略。

      如果提供了值为 0,FALSE 或 NULL 的 length,那么将返回一个空字符串。

```php
echo substr("abcdef", -2),"\n";    // 返回 "ef"
echo substr("abcdef", -3, 1),"\n"; // 返回 "d"
echo substr("abcdef", 0, -1),"\n";  // 返回 "abcde" 忽略末尾1个字符f
echo substr("abcdef", 2, -1),"\n";  // 返回 "cde" 忽略末尾1个字符f
echo substr("abcdef", 2, -4),"\n";  // 返回 ""
echo substr("abcdef", -3, -2),"\n"; // 返回 "d" 忽略末尾2个字符ef
```
  • substr_count — 计算子串出现的次数

    substr_count( string $haystack, string $needle[, int $offset = 0[, int $length]] ) : int
    

    注意:该函数不会计算重叠字符串;函数还支持offset,即从哪里开始查找计算;函数支持length,即查找到哪里;

    $text = 'This is a test';
    echo substr_count($text, 'is'),"\n"; // 2
    
    $test = "xxxxx";
    echo substr_count($test, "xx"),"\n";//2
    
  • substr_replace — 替换字符串的子串

    substr_replace( mixed $string, mixed $replacement, mixed $start[, mixed $length] ) : mixed
    

    通俗上说,先通过start与length截取字符串中的子串,然后再将子串替换成replacement。相当于substr+replace的功能。start与length参考substr函数。

    $var = "-tsingchan-";
    //将9ong插入到 $var 的开头处
    echo substr_replace($var, '9ong', 0, 0) . "\n";//9ong-tsingchan-
    
    //下面两个例子使用9ong替换 $var 中的 chan
    echo substr_replace($var, '9ong', 6, -1) . "\n";//-tsing9ong-
    echo substr_replace($var, '9ong', -5, -1) . "\n";//-tsing9ong-
    
    //从 $var 中删除chan
    echo substr_replace($var, '', 6, -1) . "\n";//-tsing-
    
  • substr_compare — 二进制安全比较字符串(从偏移位置比较指定长度)

    截取子串后,再进行比较字符串,但不是自然排序的比较。

  • trim — 去除字符串首尾处的空白字符(或者其他字符)

    trim( string $str[, string $character_mask = " \t\n\r\0\x0B"] ) : string
    

    trim很简单,但又不是那么简单,主要看第二个参数character_mask:

    character_mask是可选参数,过滤字符也可由 character_mask 参数指定。一般要列出所有希望过滤的字符,也可以使用 ".." 列出一个字符范围。

    首先,character_mask默认过滤空白符,包含空格、制表符、换行符、回车符等空白符;

    其次,可以自定义character_mask字符,注意如果设置的是一个字符串(多字符),那么每个字符都会按trim的规则首尾检查并对应过滤,而不是过滤一个字符串;

    最后,character_mask参数支持..来包含一个字符范围,比如我们常用的ASCII控制符范围。

    官方文档例子:

    $text   = "\t\tThese are a few words :) ...  ";
    $binary = "\x09Example string\x0A";
    $hello  = "Hello World";
    //var_dump($text, $binary, $hello);
    
    $trimmed = trim($text);
    echo $trimmed,"\n";//These are a few words :) ...
    
    $trimmed = trim($text, " \t.");//注意:尾巴的三个.字符都被过滤
    echo $trimmed,"\n";//These are a few words :)
    
    $trimmed = trim($hello, "Hdle");//注意:不是简单的过滤Hdle字符串,而4个字符H d l e一一在首尾检查并过滤
    echo ($trimmed),"\n";//o Wor
    
    // 清除 $binary 首位的 ASCII 控制字符
    // (包括 0-31)
    $clean = trim($binary, "\x00..\x1F");//支持..范围检查过滤
    echo $clean,"\n";//Example string
    
  • ltrim — 删除字符串开头的空白字符(或其他字符)

    同trim,只是去除字符串左侧(首部)的指定字符。

  • rtrim — 删除字符串末端的空白字符(或者其他字符)

    同trim,只是去除字符串右侧(尾部)的指定字符。

  • vprintf — 输出格式化字符串

    vprintf( string $format, array $args) : int
    

    根据 format (sprintf() 函数文档中有相关描述)参数指定的格式,在一个格式化字符串中显示多个值。

    作用与 printf() 函数类似,但是接收一个数组参数,而不是一系列可变数量的参数。

    vprintf("%04d-%02d-%02d", explode('-', '2020-1-1')); // 2020-01-01
    
  • vsprintf — 返回格式化字符串

```php
vsprintf( string $format, array $args) : string

```
注意是返回,而不是直接输出。

作用与 sprintf() 函数类似,但是接收一个数组参数,而不是一系列可变数量的参数。 

作用于vprintf一样,但不直接输出而是返回字符串。

```php
echo vsprintf("%04d-%02d-%02d", explode('-', '2020-1-1')); // 2020-01-01
```
  • vfprintf — 将格式化字符串写入流
向由 handle 指定的流资源句柄中写入根据 format 格式化后的字符串。 同vprintf,但多了个参数handle,是输出写入流。

```php
vfprintf( resource $handle, string $format, array $args) : int
```
  • 关于格式化字符串说明符

    %   文字百分比字符。不需要任何参数。
    b   该参数被视为整数,并以二进制数表示。
    c   该参数被视为整数,并以该ASCII形式显示为字符。
    d   该参数被视为整数,并以(有符号的)十进制数表示。
    e   该论点被视为科学记数法(例如1.2e + 2)。精度说明符表示自PHP 5.2.1起小数点后的位数。在早期版本中,它被视为有效数字(少一位)。
    E   类似于说明e符,但使用大写字母(例如1.2E + 2)。
    f   该参数被视为浮点数,并显示为浮点数(可识别语言环境)。
    F   该参数被视为浮点数,并被表示为浮点数(不支持区域设置)。自PHP 5.0.3起可用。    
    o   该参数被视为整数,并以八进制数表示。
    s   该参数被视为字符串显示。
    u   该参数被视为整数,并以无符号十进制数形式出现。
    x   该参数被视为整数,并以十六进制数字(带有小写字母)的形式呈现。
    X   该参数被视为整数,并以十六进制数字(带有大写字母)的形式呈现。
    

    参考:PHP: vsprintf - Manual

  • wordwrap — 打断字符串为指定数量的字串

    wordwrap( string $str[, int $width = 75[, string $break = "\n"[, bool $cut = FALSE]]] ) : string
    

    通过指定width宽度智能打断字符串,插入break符号,比如换行符。看函数名wordwrap,有接触过css就大概知道函数的功能了,css的word-wrap属性:允许长单词换行到下一行,达到自动换行的效果。

    如果 参数cut 设置为 TRUE,字符串总是在指定的 width 或者之前位置被打断。因此,如果有的单词宽度超过了给定的宽度,它将被分隔开来。(参见第二个范例)。当它是 FALSE ,函数不会分割单词,哪怕 width 小于单词宽度。

```php
$text = "A very long woooooooooooooooooord. and something";
$cut = false;
$newtext = wordwrap($text, 9, "\n", $cut);

echo "$newtext\n";
```

输出:
```php
//如果cut为 false 则:
A very
long
woooooooooooooooooord.
and
something

```
```php
//如果cut为 true 则:    
A very
long
woooooooo
ooooooooo
ord. and
something

```

本文内容较长,如有被截断或缺失,请参考原文:
PHP函数参考24-常用字符串函数 - 9ong
PHP函数参考25-常用数组函数 - 9ong

©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,214评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,307评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,543评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,221评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,224评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,007评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,313评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,956评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,441评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,925评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,018评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,685评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,234评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,240评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,464评论 1 261
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,467评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,762评论 2 345

推荐阅读更多精彩内容