Blogger Information
Blog 57
fans 3
comment 0
visits 60545
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP基础-字符串函数
岂几岂几
Original
874 people have browsed it

1. 分割查询与替换函数

1.1 第一组

  1. implode(元素间隔符, 待处理数组):将一个一维数组的值转化为字符串
    • join()函数的用法和功能均与implode()相同
    • 示例:
  1. $roleIds = [1, 3, 5, 7, 9];
  2. $roleIdStr = implode(',', $roleIds);
  3. echobr($roleIdStr);
  4. /*
  5. result: 1,3,5,7,9
  6. */
  1. explode(元素分割符, 待处理字符串):使用一个字符串分割另一个字符串
    • 示例
  1. $data = '2&4&6&8&10';
  2. $arr = explode('&', $data);
  3. printfpre($arr);
  4. /*
  5. result:
  6. Array
  7. (
  8. [0] => 2
  9. [1] => 4
  10. [2] => 6
  11. [3] => 8
  12. [4] => 10
  13. )
  14. */
  1. substr(待处理字符串, 开始截取子串的位置, 截取的子串长度[可选]):返回字符串的子串
    • 示例:
  1. $str = "Mom said:'Life is like a box of chocolate.'";
  2. // test1:截取妈妈说的话的第一个单词
  3. $firstWord = substr($str, 10, 4);
  4. echobr($firstWord);
  5. /*
  6. result:Life
  7. */
  8. /* 第二个参数也可以是负数,代表从字符串最有一个字符开始截取 */
  9. // test2:截取妈妈说的话的最后一个单词
  10. $lastWord = substr($str, -11, 9);
  11. echobr($lastWord);
  12. /*
  13. result: chocolate
  14. */
  15. /* 第三个参数也可以是负数, 此时它是代表截取的字符串最后的位置是从字符串的最后一个字符开始数的第(-n)个字符 */
  16. // test2:截取出妈妈说话的内容
  17. $monSaid = substr($str, 10, -2);
  18. echobr($monSaid);
  19. /*
  20. result: Life is like a box of chocolate
  21. */
  1. substr_count(待处理字符串, 待统计次数的子串, 开始查找待统计子串位置[可选], 查找的字符长度[可选]):查找一个字符串在另一个字符串中出现的次数
    • 示例:
  1. // test1:查找ing字符串出现的次数
  2. $str = 'goingsettingfinishingstartinglovinghating';
  3. $target = 'ing';
  4. $count = substr_count($str, $target);
  5. echobr('共出现' . $count . '次');
  6. /*
  7. result: 共出现6次
  8. */
  9. // test2:从第11个字符开始查找
  10. $count = substr_count($str, $target, 11);
  11. echobr('共出现' . $count . '次');
  12. /*
  13. result: 共出现4次
  14. */
  15. // test3: 从倒数第20个字符开始查找,查找15个字符
  16. $count = substr_count($str, $target, -20, 15);
  17. echobr('共出现' . $count . '次');
  18. /*
  19. 分别是starting和loving中的ing
  20. result: 共出现2次
  21. */
  22. // test4: 从倒数第20个字符开始查找, 到倒数第3个字符为止
  23. echobr('共出现' . substr_count($str, $target, -20, -2) . '次');
  24. /*
  25. result: 共出现2次
  26. */
  1. substr_replace(待处理字符串, 被替换成的字符串, 被替换的子串的开始位置, 被替换的子串的长度[可选]):把字符串中的一部分替换成另一个字符串
  • 示例:
  1. // test1:把玩手机游戏替换为学习
  2. $str = 'I like playing phone games';
  3. echobr(substr_replace($str, 'study', 7));
  4. /*
  5. result: I like study
  6. */
  7. // test2:再加上x-box游戏
  8. echobr(substr_replace($str, ' and x-box games', strlen($str)));
  9. /*
  10. result: I like playing phone games and x-box games
  11. */
  12. // test3:把手机游戏换成x-box游戏
  13. echobr(substr_replace($str, 'x-box', 15, -6));
  14. /*
  15. result: I like playing x-box games
  16. */
  17. // test4:另一种写法
  18. echobr(substr_replace($str, 'x-box', -11, -6));
  19. /*
  20. result: I like playing x-box games
  21. */
  1. str_split(待处理字符串, 分割长度[可选]):按一定长度分割字符串, 分割成的字符串形成数组返回
  • 示例:
  1. $str = 'abcdefghijklmnopqrst uvwxyz';
  2. // test1:分割成单个字符
  3. dumpbr(str_split($str));
  4. /*
  5. result: array(27) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> string(1) "c" [3]=> string(1) "d" [4]=> string(1) "e" [5]=> string(1) "f" [6]=> string(1) "g" [7]=> string(1) "h" [8]=> string(1) "i" [9]=> string(1) "j" [10]=> string(1) "k" [11]=> string(1) "l" [12]=> string(1) "m" [13]=> string(1) "n" [14]=> string(1) "o" [15]=> string(1) "p" [16]=> string(1) "q" [17]=> string(1) "r" [18]=> string(1) "s" [19]=> string(1) "t" [20]=> string(1) " " [21]=> string(1) "u" [22]=> string(1) "v" [23]=> string(1) "w" [24]=> string(1) "x" [25]=> string(1) "y" [26]=> string(1) "z" }
  6. */
  7. // test2:按定长分割
  8. dumpbr(str_split($str, 7));
  9. /*
  10. result: array(4) { [0]=> string(7) "abcdefg" [1]=> string(7) "hijklmn" [2]=> string(7) "opqrst " [3]=> string(6) "uvwxyz" }
  11. */
  1. str_getcsv():解析 CSV 字符串为一个数组(略)

1.2 第二组

  1. str_pad(待处理字符串, 填充长度, 填充的子串[可选], 填充的方向[可选]):使用另一个字符串填充字符串为指定长度
  • 示例:
  1. // 1. 所有可选项均不入参,则默认使用空格" "填充到制定长度
  2. echobr('=>' . str_pad('hello, GuangXi NanNing!', 130) . '<=');
  3. /*
  4. result: =>hello, GuangXi NanNing! <=
  5. 只填充了一个空格?因为浏览器解析多个连续空格时只解析一个
  6. */
  7. // 2. 可选项只入参填充长度,填充方向不入参(默认向右填充)
  8. echobr(str_pad('hello, GuangXi NanNing!', 30, '!'));
  9. /*
  10. result: hello, GuangXi NanNing!!!!!!!!
  11. */
  12. // 3. 指定填充方向(STR_PAD_LEFT:向左填充;STR_PAD_RIGHT:向右填充(默认);STR_PAD_BOTH:两端填充)
  13. echobr(str_pad('hello, GuangXi NanNing!', 30, '!', STR_PAD_LEFT));
  14. /*
  15. result: !!!!!!!hello, GuangXi NanNing!
  16. */
  1. str_repeat(待处理字符串, 重复次数):把一个字符串重复N次
  • 示例:
  1. echobr(str_repeat('重要的事情说三遍!', 3));
  2. /*
  3. result: 重要的事情说三遍!重要的事情说三遍!重要的事情说三遍!
  4. */
  1. str_replace(查找替换的子串, 替换成的字串, 待处理字符串, 记录替换次数[可选]): 子字符串替换.
    • str_ireplace(查找替换的子串, 替换成的字串, 待处理字符串, 记录替换次数[可选])用法类似,功能相同,但忽略大小写
    • 前三个参数的值都可以是字符串/字符串数组,即能同时处理多个字符串;能查找多个子串;(查找到的多个子串)能同时替换成多个子串
    • str_ireplace(查找替换的子串, 替换成的字串, 待处理字符串, 记录替换次数[可选])是忽略大小写的版本,用法和str_replace()相同,略。
    • 示例:
  1. // 1. 查找一个子串,替换成一个子串,处理一个字符串
  2. echobr(str_replace('ing', '<=>', 'doingsleepingwritingsettingcuttingdone'));
  3. /*
  4. result: do<=>sleep<=>writ<=>sett<=>cutt<=>done
  5. */
  6. // 2. 查找多个子串,替换成一个子串,处理一个字符串
  7. echobr(str_replace(['m', 'n'], 'o', 'I am from GuangXi NanNing, China.'));
  8. /*
  9. result: I ao froo GuaogXi NaoNiog, Chioa.
  10. */
  11. // 3. 查找多个子串,替换成多个子串,处理一个字符串
  12. echobr(str_replace(['m', 'n'], ['o', 'p'], 'I am from GuangXi NanNing, China.'));
  13. /*
  14. result: I ao froo GuapgXi NapNipg, Chipa.
  15. */
  16. /* 删除 */
  17. echobr(str_replace(['m', 'n'], '', 'I am from GuangXi NanNing, China.'));
  18. /*
  19. result: I a fro GuagXi NaNig, Chia.
  20. */
  21. // 4. 查找多个子串,替换成多个子串,处理多个字符串
  22. printfpre(str_replace(['m', 'n'], ['o', 'p'], ['I am from GuangXi NanNing, China.', 'commingmoonmultiplymanyname']));
  23. /*
  24. result:
  25. Array
  26. (
  27. [0] => I ao froo GuapgXi NapNipg, Chipa.
  28. [1] => coooipgooopoultiplyoapypaoe
  29. )
  30. */
  31. // 5. 记录替换次数
  32. str_replace('n', 'o', 'I am from GuangXi NanNing, China.', $count);
  33. echobr("共替换了{$count}个'n'");
  34. /*
  35. result: 共替换了4个'n'
  36. */
  1. strtr():把待处理的字符串中匹配到的字符替换为指定的字符,返回替换后的字符串。
    • strtr(待处理字符串,被替换的字符(多个字符用字符串列出),被替换成的字符(多个字符用字符串列出):只有一个替换对
    • 被替换的字符数要跟替换成的字符数一致,否则无论哪一方多出的字符都会被忽略
    • 示例:
  1. /* i=>e; n=>d; g=; */
  2. echobr(strtr('doing coming setting going', 'ing', 'ed;'));
  3. /*
  4. result: doed; comed; setted; ;oed;
  5. */
  6. // 2. strtr(待处理字符串,替换对数组):当有多个替换对时,以数组的形式传入
  7. echobr(strtr('doing coming setting going', ['i' => 'e', 'n' => 'd', 'g' => ';']));
  8. /*
  9. result: doed; comed; setted; ;oed;
  10. */
  1. str_shuffle(待处理字符串):随机打乱一个字符串中的字符顺序,并返回
    • 示例:
  1. echobr(str_shuffle('abcdefghijklmnopqrstuvwxyz'));
  2. /*
  3. result: wxzvqgptacjdhbfkyeslnoiurm
  4. */
  1. wordwrap(待处理字符串,列宽[default=75, 可选],打断字符串的参数[default=\n,可选], 是否从超过列宽的字符串中间打断[default=false, 可选])
    • 设置一行能容纳的字符数(列宽),当字符串超过这个字符数时,将会被打断。英文字符串不会被从中间打断,保证字符串在同一行。
    • 示例:
  1. // test1:列宽设置为17,超出的字符串打断后做换行(<br/>)处理
  2. echobr(wordwrap("i am the 1st row. i am the 2nd row. i am the 3rd row.", 17, '<br/>'));
  3. /*
  4. result:
  5. i am the 1st row.
  6. i am the 2nd row.
  7. i am the 3rd row.
  8. */
  9. // test2:列宽还是17,超出的字符串打断后改成分列(</td><td>)处理
  10. $content = wordwrap("i am the 1st row. i am the 2nd row. i am the 3rd row.", 17, '</td><td>');
  11. $tbl = <<< EOP
  12. <table border="1" cellspacing="0">
  13. <tr>
  14. <td>
  15. {$content}
  16. </td>
  17. </tr>
  18. </table>
  19. EOP;
  20. echobr($tbl);
  21. /*
  22. result:
  23. <table cellspacing="0" border="1">
  24. <tbody><tr>
  25. <td>
  26. i am the 1st row.</td><td>i am the 2nd row.</td><td>i am the 3rd row.
  27. </td>
  28. </tr>
  29. </tbody></table>
  30. */
  31. // 字符串长度超过列宽,可以默认不打断,可以设置最后一个参数将其打断
  32. echobr(wordwrap('congratulations!', 10, '<br/>', true));
  33. /*
  34. resulta:
  35. congratula
  36. tions!
  37. */
  1. trim(待处理字符串, 需要在首尾去除的字符(多个用数组入参)[可选, 默认值为空白]):去除字符串首尾处的空白字符(或者其他字符)
    • ltrim():只去除左边的空白字符;rtrim():只去除右边的空白字符。用法跟trim()相同,略。chop():rtrim()的别名。
    • 示例:
  1. // test1:去空格
  2. $str = ' hello everyone! ';
  3. echobr(chop($str));
  4. /*
  5. result: hello everyone!
  6. */
  7. // test2:去掉其他字符(多个字符以字符串的形式传入,忽略顺序,首尾处只要出现字符串中的字符,都会被去除)
  8. $str = 'hello everyone';
  9. echobr(trim($str, "ehlo"));
  10. /*
  11. result: everyon
  12. */

1.3 第三组

  1. strpos(待处理字符串,需查找的子串,查找偏移量[可选]):查找子字符串在待处理字符串中首次出现的位置
    • stripos():功能跟strpos()相同,但查找时忽略大小写。
    • strrpos(): 计算指定字符串在目标字符串中最后一次出现的位置
    • strripos():计算指定字符串在目标字符串中最后一次出现的位置(忽略大小写)
    • 示例:
  1. $target = "ing";
  2. $str = 'going setting going getting starting';
  3. /* test1: */
  4. echobr('"ing"首次出现的位置是:' . (strpos($str, $target) + 1));
  5. /*
  6. result: "ing"首次出现的位置是:3
  7. */
  8. /* test2:从第4个字符开始搜索 */
  9. echobr('"ing"首次出现的位置是:' . (strpos($str, $target, 3) + 1));
  10. /*
  11. result: "ing"首次出现的位置是:11
  12. */
  13. /* test3:*/
  14. echobr('"ing"最后一次出现的位置是:' . (strrpos($str, $target) + 1));
  15. /*
  16. result: "ing"最后一次出现的位置是:34
  17. */
  18. /* test4: 忽略大小写 */
  19. $str = 'goIng settiNg goinG getting startING';
  20. echobr('"ing"忽略大小写时首次出现的位置是:' . (1 + stripos($str, $target)));
  21. echobr('"ing"不忽略大小写时首次出现的位置是:' . (1 + strpos($str, $target)));
  22. echobr('"ing"忽略大小写时最后一次出现的位置是:' . (1 + strripos($str, $target)));
  23. /*
  24. result:
  25. "ing"忽略大小写时首次出现的位置是:3
  26. "ing"不忽略大小写时首次出现的位置是:25
  27. "ing"忽略大小写时最后一次出现的位置是:34
  28. */
  1. strstr(待处理字符串,需查找的子串,截取方向[可选, 默认值=false, 向后截取])
    • 从待处理的字符串中查找子串,并从首次找到的位置开始,截取到字符串末尾(默认,包括查找的子串)/前端(不包括查找的子串)形成的字符串
    • stristr()是忽略大小写的版本
    • strrchr()是从最后一次找到的位置开始截取
    • strchr()是strstr()的别名
    • 示例:
  1. $url = 'www.php.cn/0422/homework/homework.php?username=zhangsan&password=123456';
  2. /* test1:向后截取 */
  3. echobr('url的参数部分:' . strstr($url, '?'));
  4. /*
  5. result: url的参数部分:?username=zhangsan&password=123456
  6. */
  7. /* test2:向前截取 */
  8. $url = strstr($url, '?', true);
  9. echobr('url的访问路径:' . strstr($url, '/'));
  10. /*
  11. result: url的访问路径:/0422/homework/homework.php
  12. */
  13. $str = 'goIng settiNg goinG getting starting';
  14. /* test3:忽略大小写 */
  15. echobr(stristr($str, 'ing'));
  16. /*
  17. result: Ing settiNg goinG getting startING
  18. */
  19. /* test4:从最有一次找到的位置开始截取 */
  20. echobr(strrchr($str, 'ing'));
  21. /*
  22. result: ing
  23. */
  1. strpbrk(待处理字符串, 需查询的字符组成的字符串):从待处理的字符串中,查找字符组中的任意一个字符,截取首次查到的位置到字符串末端形成的字符串
    • 示例:
  1. $str = 'goIng settiNg goinG getting starting';
  2. $targets = 'esc';
  3. echobr(strpbrk($str, $targets));
  4. /*
  5. 第一个匹配成功的字符是: s
  6. result: settiNg goinG getting starting
  7. */
  1. strspn(待处理字符串, 需查询的字符组成的字符串, 开始查询的位置[可选], 查询的字符串长度[可选]):
    • 计算字符串中全部字符都存在于指定字符集合中的第一段子串的长度
    • 坑: 必须从指定的位置就匹配到,如果指定的位置的字符没有在给定的字符组中,则不会再匹配
    • 示例:
  1. $str = 'getting goinG getting starting';
  2. $targets = 'teing';
  3. /* test1: */
  4. // 默认从字符串开始搜索到未尾
  5. echobr(strspn($str, $targets));
  6. /* 匹配到的子串是getting
  7. result: 7
  8. */
  9. /* test2:指定匹配开始位置(可以是负数索引) */
  10. echobr(strspn($str, $targets, -4));
  11. /*
  12. 匹配到的子串是最后starting中的ting
  13. result: 4
  14. */
  15. /* test3:指定查询的字符串长度(第四个参数为非负数时) */
  16. echobr(strspn($str, $targets, 0, 3));
  17. /*
  18. 匹配到的子串是get
  19. result: 3
  20. */
  21. /* test4:指定查询的结束位置(第四个参数为负数时) */
  22. echobr(strspn($str, $targets, 0, -10));
  23. /*
  24. 实际的待处理的字符串是: getting goinG gettin;最后的g starting这10个字符不在处理范围
  25. 匹配到的是一开始的getting.
  26. result: 7
  27. */
  1. strtolower(待处理字符串):将字符串转化为小写;strtoupper(待处理字符串):将字符串转化为大写
    • 示例:
  1. $str = 'ABCD EFG HIJK LMN opq rst uvw xyz';
  2. /* test1:全部转小写 */
  3. $res = strtolower($str);
  4. echobr($res);
  5. /*
  6. result: abcd efg hijk lmn opq rst uvw xyz
  7. */
  8. /* test2:全部转大写 */
  9. echobr(strtoupper($str));
  10. /*
  11. result: ABCD EFG HIJK LMN OPQ RST UVW XYZ
  12. */
  13. /* test3:首字母小写 */
  14. echobr(lcfirst($str));
  15. /*
  16. result: aBCD EFG HIJK LMN opq rst uvw xyz
  17. */
  18. /* test4:首字母大写 */
  19. echobr(ucfirst($res));
  20. /*
  21. result: Abcd efg hijk lmn opq rst uvw xyz
  22. */
  23. /* test5:单词首字母大写 */
  24. echobr(ucwords($res));
  25. /*
  26. result: Abcd Efg Hijk Lmn Opq Rst Uvw Xyz
  27. */
  1. strlen(待处理字符串):获取字符串字节数
    • 示例:
  1. // test1: 英文+特殊字符等
  2. $str = 'abcdefghijklmnopqrstuvwxyz +_*&^%$#@!~-=`';
  3. echobr(strlen($str));
  4. /*
  5. result: 41
  6. */
  7. // test2:中文
  8. $str = '我爱PHP';
  9. echobr(strlen($str));
  10. /*
  11. utf-8编码下的一个中文占3个字节
  12. result: 9
  13. */
  1. strrev(待处理字符串):反转字符串
    • 示例:
  1. // test1:有中文,输出乱码,证明是按字节反转
  2. $str = '猪是来过反';
  3. echobr(strrev($str));
  4. // test2:
  5. $str = 'hello boys and girls';
  6. echobr(strrev($str));
  7. /*
  8. result: slrig dna syob olleh
  9. */
  1. strip_tags(待处理字符串):从字符串中去除 HTML 和 PHP 标记
    • 示例:
  1. $str = <<< EOP
  2. <h1>这里是h1标题</h1>
  3. <?php echo "<span>php生成的html代码</span>"; ?>
  4. hello everyone!
  5. EOP;
  6. echobr(strip_tags($str));
  7. /*
  8. result: 这里是h1标题 hello everyone!
  9. */

4. URL处理函数

  1. parse_str(待处理字符串, 存放解析变量的数组[可选]):将字符串解析成多个变量,处理url中的参数部分
    • 示例
  1. $param = 'user=admin&password=123456&sex=male&realname=zhang+san&data[]=1&data[]=2';
  2. /* 不需要问号了 */
  3. // test1:直接解析为当前作用域的变量(不推荐此用法)
  4. parse_str($param);
  5. /* 解析完成后可以在当前作用域直接使用这些变量 */
  6. echobr($user);
  7. echobr($password);
  8. echobr($sex);
  9. echobr($realname);
  10. dumpbr($data);
  11. /*
  12. result:
  13. 123456
  14. male
  15. zhang san
  16. array(2) { [0]=> string(1) "1" [1]=> string(1) "2" }
  17. */
  18. // test2:解析结果作为数组元素存到第二个参数中
  19. parse_str($param, $dt);
  20. printfpre($dt);
  21. /*
  22. result:
  23. Array
  24. (
  25. [user] => admin
  26. [password] => 123456
  27. [sex] => male
  28. [realname] => zhang san
  29. [data] => Array
  30. (
  31. [0] => 1
  32. [1] => 2
  33. )
  34. )
  35. */
  1. parse_url(url字符串, url部分标识[可选]):解析 URL,返回其组成部分
    • 示例:
  1. $url = 'http://www.php.edu/0422/homework/homework.php?user=admin&password=123456#abcdefg';
  2. // test1:返回解析的所有结果组成的数组
  3. printfpre(parse_url($url));
  4. /*
  5. result:
  6. Array
  7. (
  8. [scheme] => http
  9. [host] => www.php.edu
  10. [path] => /0422/homework/homework.php
  11. [query] => user=admin&password=123456
  12. [fragment] => abcdefg
  13. )
  14. */
  15. // test2:只返回某个部分(示例中返回查询参数)
  16. /* 能返回的部分: PHP_URL_SCHEME、 PHP_URL_HOST、 PHP_URL_PORT、 PHP_URL_USER、 PHP_URL_PASS、
  17. PHP_URL_PATH、 PHP_URL_QUERY 或 PHP_URL_FRAGMENT */
  18. printfpre(parse_url($url, PHP_URL_QUERY));
  19. /*
  20. result: user=admin&password=123456
  21. */
  1. http_build_query(参数数组, 字段前缀[可选], 请求字符串中参数键值对的连接符[可选,默认为&], 生成请求字符串的编码[可选]):生成 URL-encode 之后的请求字符串
    • 示例:
  1. $data = [
  2. 'name' => 'admin', 'realname' => 'zhang san', 'password' => '123456', 'roleId' => [1, 2, 3]
  3. ];
  4. // test1:
  5. echobr(http_build_query($data));
  6. /*
  7. result: name=admin&realname=zhang+san&password=123456&roleId%5B0%5D=1&roleId%5B1%5D=2&roleId%5B2%5D=3
  8. */
  9. // test2:指定字段前缀,键值对连接符指定为;
  10. echobr(http_build_query($data, 'db_', ';'));
  11. /*
  12. result: name=admin;realname=zhang+san;password=123456;roleId%5B0%5D=1;roleId%5B1%5D=2;roleId%5B2%5D=3
  13. */
  1. urldecode(url字符串)/urlencode(url字符串):解码已编码的url字符串/编码url字符串
    • 示例:
  1. $param = 'http://www.php.edu/0422/homework/homework.php?user=admin&password=123456&sex=male&realname=zhang+san&data[]=1&data[]=2';
  2. // test1:编码
  3. $res = urlencode($param);
  4. echobr($res);
  5. /*
  6. result: http%3A%2F%2Fwww.php.edu%2F0422%2Fhomework%2Fhomework.php%3Fuser%3Dadmin%26password%3D123456%26sex%3Dmale%26realname%3Dzhang%2Bsan%26data%5B%5D%3D1%26data%5B%5D%3D2
  7. */
  8. // test2:解码
  9. echobr(urldecode($res));
  10. /*
  11. result: http://www.php.edu/0422/homework/homework.php?user=admin&password=123456&sex=male&realname=zhang+san&data[]=1&data[]=2
  12. */
  1. base64_encode():使用 MIME base64 对数据进行编码;base64_decode():使用 MIME base64 对数据进行解码
    • 使用场景: 把页面中常用的小图片编码后以请求参数的形式传输, 以减少静态文件请求的次数
    • 示例:
  1. // test1: 编码
  2. $img = base64_encode(file_get_contents('../pic.png'));
  3. // echobr($img);
  4. echo "<img src='data:image/>jpeg;base64,{$img}'>";
  5. // test2: 解码, 把编码后的图片还原, 并保存为文件
  6. file_put_contents('girl.jpg', base64_decode($img));

5. HTML相关

  1. htmlspecialchars(待处理字符串):将特殊字符转换为HTML实体
    • 相当于对HTML保留字符进行转义, 原文输出这些特殊字符
    • 示例:
  1. $html = <<< EOP
  2. <h1>我是'h1'标题</h1>
  3. <span><<<姓 名>>></span>
  4. EOP;
  5. // test1
  6. /* 转义后所有特殊字符会原样输出 */
  7. echobr(htmlspecialchars($html));
  8. /* 不经过转义,特殊字符将会被浏览器解析 */
  9. echobr($html);
  10. /*
  11. result:
  12. <h1>我是'h1'标题</h1>
  13. <span><<<姓 名>>></span>
  14. <h1>我是'h1'标题</h1>
  15. <span><<<姓 名>>></span>
  16. */
  1. htmlspecialchars_decode(待处理字符串):将特殊的 HTML 实体转换回普通字符
    • htmlspecialchars()的反向操作
    • 示例:
  1. $html1 = <<< EOP
  2. <h1>我是'h1'标题</h1>
  3. <span><<<姓 名>>></span>
  4. EOP;
  5. // test1
  6. /* 转换后所有字符会被浏览器解析 */
  7. echobr(htmlspecialchars_decode($html1));
  8. /* 不转换, 特殊字符会原样输出 */
  9. echobr($html1);
  10. /*
  11. result:
  12. <h1>我是h1标题</h1>
  13. <span><<<姓 名>>></span>
  14. <h1>我是h1标题</h1>
  15. <span><<<姓 名>>></span>
  16. */
  1. htmlentities(待处理字符串):功能和htmlspecialchars()相同, 但htmlentities()能转义的实体字符更多
    • 示例:
  1. // test1:单引号和双引号也转义
  2. $html2 = <<< EOP
  3. <h1>我是'h1'标题</h1>
  4. <span><<<姓 名>>></span>
  5. EOP;
  6. echobr(htmlentities($html2, ENT_QUOTES));
  7. /*
  8. result:
  9. <h1>我是'h1'标题</h1>
  10. <span><<<姓 名>>></span>
  11. */
  1. html_entity_decode(待处理字符串):将HTML实体转换为它们相应的字符
    • 和htmlentities()相反的操作
    • 示例:
  1. // test1: 单引号和双引号也转换
  2. $html3 = <<< EOP
  3. <h1>我是'h1'标题</h1>
  4. <span><<<姓 名>>></span>
  5. EOP;
  6. echobr(html_entity_decode($html3, ENT_QUOTES));
  7. /*
  8. result:
  9. <h1>我是'h1'标题</h1>
  10. <span><<<姓 名>>></span><br>
  11. */
  1. nl2br(待处理字符串, 是否使用XHTML兼容换行符[可选,TRUE]):在字符串所有新行之前插入HTML换行标记<br/>
    • 示例:
      1. $html4 = "离离原上草\n一岁一枯荣\r\n野火烧不尽\n春风吹又生";
      2. echobr(nl2br($html4));
      3. /*
      4. 离离原上草<br />
      5. 一岁一枯荣<br />
      6. 野火烧不尽<br />
      7. 春风吹又生<br>
      8. */

6. 转码相关函数

暂时不感兴趣, 略过…

7. 哈希相关函数

  1. md5(): 返回32位随机字符串, 由16进制的字符组成(0-9, 1-f)
    • 示例:
  1. $str = 'hello everyone!';
  2. $salt = 'anbmcldkejfigh1234567890';
  3. $str .= $salt;
  4. echobr(md5($str));
  5. /*
  6. result: f86aa82a662a37bb650c849fc6df7363
  7. */
  1. sha1(): 返回40位随机字符串, 由16进制的字符组成(0-9, 1-f)
    • 安全的加密算法, 在明文上加盐值, 然后使用不同的加密算法嵌套加密
    • 示例:
  1. $str = 'hello everyone!';
  2. $salt = 'anbmcldkejfigh1234567890';
  3. $str .= $salt;
  4. echobr(sha1($str));
  5. /*
  6. result: f19831b4b4530f535a1688a5dc2cbe03673bdbda
  7. */

学习心得

  • 正如老师所说,在实际开发中,有很大一部分内容是跟字符串/数组打交道.所以字符串函数的学习显得格外重要.
  • 本想把老师教案中的所有字符串函数都学习举例,但是,对转码还没有概念,对统计和比较函数也未知其使用场景,所以暂时略过这部分函数,哈希函数暂时也只写了老师提到的两个函数.其他函数均已学习并写出示例.
  • 耗时最长的一次作业(可能后面会被数组相关函数打破),但是写下来备查也不错.作业中的注释都是自己学习该函数时的理解,更方便以后备查.
Correcting teacher:天蓬老师天蓬老师

Correction status:Uncorrected

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post