//------------------------------字符串操作-----------------------------------------------
// 1. 将数组转为字符串打印: implode(连接符, 数组)和join()是同名函数, 返回的是一个字符串, 例:
echo 'implode函数: ', implode('---', [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]), '<br>';
echo 'join函数: ', join('---', [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]), '<hr>';
// 2.把一个字符串解析成一个函数: explode(字符串中的分隔符, 字符串, 切割的间隔),返回的是一个数组, 例:
print_r(explode(', ', 'z, x, c, v, b, n, n'));
echo '<br>';
print_r(explode(', ', 'z, x, c, v, b, n, n', 3)); // Array ( [0] => z [1] => x [2] => c, v, b, n, n )
echo '<hr>';
// 3. 把一个关联数组解析成字符串并赋值给对应键值创建的变量: extract(数组),返回的是解析后的变量数 例:
extract(['name' => '张三', 'age' => 20, 'sex' => '男']);
printf('姓名: %s, 年龄: %d, 性别: %s', $name, $age, $sex); // 姓名: 张三, 年龄: 20, 性别: 男
echo '<hr>';
//4.子串操作: substr(字符串, 起始索引, 长度). 返回的是一个新的字符串,并不会影响到原本的字符串,例:
$str = 'abcdefghijklmnopqrstvwxyz';
echo substr($str, 1, 5), '<hr>';
// 5.统计字符串出现的次数: substr_count(字符串, 要查询的字符, 起始位置(默认从零开始), 长度(默认长度为字符串的长度)), 返回的是一个数字, 例:
$str = 'abcdefghijklmnopqrstvwxyzabcdefghijklmnopqrstvwxyzabcdefghijklmnopqrstvwxyzabcdefghijklmnopqrstvwxyz';
echo '数组中a出现的次数: ', substr_count($str, 'a'), '<hr>';
// 6.字符串的替换操作: substr_replace(字符串, 要替换的字符, 起始位置(默认从零开始), 长度), 返回结果为全新的 字符串/数组,例:
$str = 'abcdefghijklmnopqrstvwxyz';
echo substr_replace($str, '你好,世界!', 0), '<br>'; // 默认长度不填的话长度为字符串长度
echo $str, '<br>';
echo substr_replace($str, '你好,世界!', 0, 5), '<br>';
echo $str, '<hr>';
// 7. 字符串切割为数组: str_split(字符串, 切割的间隔, 默认为1), 返回的是一个数组.字符串中有中文的画不要使用该函数,应该用mb扩展. 例:
$str = 'abcdefghijklmnopqrstvwxyz';
print_r(str_split($str));
echo '<hr>';
// 8. 向一个字符串中插入字符串并指定长度: str_pad(字符串, 长度, 插入字符串, 插入位置(0: 全插入到左边, 1: 全插入到右边, 2: 左右等分));
$str = 'abcdefghijklmnopqrstvwxyz';
echo str_pad('php', 10,'=',STR_PAD_BOTH),'<br>';
echo str_pad($str, strlen($str)+10, '~', 0), '<hr>';
//9. 重复字符窜: str_repeat(字符串, 重复次数), 返回一个新的字符串 例:
echo str_repeat('ABA--', 10),'<hr>';
// 10. 替换: str_replace(准备替换字符串/数组, 要替换的字符串, 字符串), 如果替换的是关联数组的话, 第一个参数为value值., 例:
$str = 'abcdefghijklmnopqrstvwxyz';
$arr = [1,2,3,4,5,67];
echo str_replace('abc', 'ABC', $str),'<br>';
print_r(str_replace(67, 'ABC', $arr));
echo '<br>';
print_r(str_replace('张三', '李四', ['name' => '张三', 'age' => 20, 'sex' => '男']));
echo '<hr>';
// 11. 获取字符串的位置: strPps(字符串, 要查询的字符串, 查询的起始位置(默认从起始位置开始)), 例:
$str = 'abcdefghijklmnopqrstvwxyz';
echo strpos($str, 'abc', 10), '<hr>' ;
// 12. 查询字符首次出现的位置, 并返回它: strstr(字符串, 要查询的字符串, false(返回查询字符串的后面的字符串)/true(返回查询字符串的前面的字符串)[默认false])
echo strstr('abcdefghijklmnopqrstvwxyz', 'k'), '<br>';
echo strstr('abcdefghijklmnopqrstvwxyz', 'k', true), '<hr>';
// 13. url相关
// 13.1 把查询字符串解析到一个数组中: parse_str(查询字符串, 变量名),返回一个数组. 例:
$cxzfc = 'name=张三&age=20';
parse_str($cxzfc, $cxzfcArr);
print_r($cxzfcArr);
echo '<hr>';
// 13.2 解析url: parse_url(url), 返回一个数组, 例:
$url = 'http://php.io/0201/demo4.php?id=5&name=admin%role=1';
print_r(parse_url($url));
echo '<hr>';
// 13.3 快速构造查询字符串: http_build_query(参数), 返回字符串. 例:
echo http_build_query( ['name' => '张三', 'age' => 20, 'sex' => '男']), '<hr>';
ob_clean();
//----------------------------------------------------------------------------------------------------------
// 1. 翻转字符串: strrev(字符串), 例:
echo strrev('HELLO WORLD!'), '<hr>';
// 2. 获取字符串的长度: strlen(字符串), 例:
echo strlen('nihao'), '<hr>'; // 5
// 3. 英文字符串转小写: strtolower(字符串), 返回一个新的字符串
// 4. 英文字符串转大写: strtoupper(字符串), 返回一个新的字符串
$str = 'abcdefghijklmnopqrstvwxyz';
echo strtoupper($str), '<hr>'; // 5
echo strtolower($str), '<hr>'; // 5
// 5. 字符串中每个英文单词(该函数中: 以英文开头并以空格分隔的都是英文单词)的首字母转大写: ucwords(字符串), 返回一个新的字符串
echo ucwords($str), '<br>'; // Abcdefghijklmnopqrstvwxyz
echo ucwords($str . ' qfw你好'), '<hr>'; // Abcdefghijklmnopqrstvwxyz Qfw你好
//6. 以英文字母开头的整个字符串的首字母转换成大写: ucfirst(字符串), 返回一个新的字符串
echo ucfirst($str . ' qfw你好'), '<br>'; // Abcdefghijklmnopqrstvwxyz qfw你好
echo ucfirst('你好qfw' . $str), '<hr>'; // 你好qfwabcdefghijklmnopqrstvwxyz
//7.获取字符串在另一个字符串中最后一次出现的位置: strrchr(要搜索的字符串, 要查找的字符串)
echo strrchr($str, 'qfw'), '<hr>'; // 你好qfwabcdefghijklmnopqrstvwxyz ---> qrstvwxyz
// 8. 随机地打乱字符串中的所有字符: str_shuffle(字符串), 不支持中文字符
echo str_shuffle('qfwabcdefghijklmnopqrstvwxyz'), '<hr>'; // qfwabcdefghijklmnopqrstvwxyz ---> bjznmlcxwrfohqvistafkpwgqdye
// 9. 得到指定字符的ASCII: ord($char)
// 10. 根据ASCII得到指定的字符: chr($ascii), 不支持中文,要用mb扩展
$str = 'A';
echo ord($str), '<br>';
echo chr(ord($str)), '<br>';
$str = '你好';
echo ord($str), '<br>';
echo chr(ord($str)), '<hr>'; // �
// 11. 返回字符串中单词的使用情况: str_word_count(字符串, 指定函数的返回值(0: 返回单词数量, 1: 返回包含所有的单词的数组,
// 2: 返回包含所有的单词的数组,key是该单词出现的位置))
$juzi = 'People die, but real love is forever.生命会消逝,但真爱永存。is forever';
echo str_word_count($juzi), '<br>';
var_dump(str_word_count($juzi, 1));
echo '<br>';
var_dump(str_word_count($juzi, 2));
echo '<hr>';
// 12. 以二进制的方式比较字符串(不区分大小写): strcasecmp(字符串1, 字符串2), 返回一个数字(
// >0: 字符串1>字符串2,
// <0: 字符串1<字符串2,
// ==0: 字符串1==字符串2)
var_dump(strcasecmp('AB C', 'ab c')); // 65===65 || 97===97 0
echo '<hr>';
// 13. 以二进制的方式比较字符串: strcmp(同12)
var_dump(strcmp('AB C', 'ab c')); // 65<97 -1
echo '<hr>';
// 15. 二进制安全比较字符串开头的若干个字符(不区分大小写):strncasecmp(字符串1, 字符串2, 最大比较长度)
var_dump(strncasecmp('AB C', 'ab c', 2)); // // (65===65, 66===66) || (97===97, 98===98) ===> 0
echo '<hr>';
// 16. 二进制安全比较字符串开头的若干个字符: strncmp(字符串1, 字符串2, 最大比较长度)
var_dump(strncmp('Ab C', 'bA c', 2)); // (65, 98) || (98, 65) ===> 65<98 ===> -1
echo '<hr>';
// 17. 从字符串中去除 HTML 和 PHP 标记: strip_tags(字符串, 可选参数, 指定不用去除的字符),返回一个字符
echo strip_tags('asasa<a>fasfas</a><br>'), '<br>';
echo strip_tags('asasa<a>fasfas</a><br><span>爱搭搭所多span</span><b>爱搭搭所多b</b>', '<br><span><b>'), '<br>';
// 18. 打断字符串为指定数量的字串: wordwrap(字符串, 切割长度, 拼接字符串, false(切割的位置是英文单词的话将不会把这个单词切割,/true)
$text = " The quick brown fox jumped over the lazy dog. ";
echo wordwrap($text, 6, ',<br>'), '<hr>';
echo wordwrap($text, 3, ',<br>', true), '<hr>';
// 19. 去除字符串首尾处的空白字符(或其他字符): trim(字符串, 可选参数,去除的字符),返回一个字符串
echo trim($text), '<hr>';
$text = "\nThe quick brown fox jumped over the lazy dog.\t";
echo trim($text), '<hr>';
// 20.标记分割字符串: strtok(字符串, 分割字符串时使用的分界字符), 注意,该函数只有致癌第一次调用的时候才有第一个参数,
// 再次调用时,该函数会记住它在字符串 string 中的位置.
$text = "The quick brown fox jum\nped over the lazy dog.t";
/* 使用制表符和换行符作为分界符 */
$tok = strtok($text, " \n\t");
echo $tok, '<br>';
while ($tok !== false) {
echo "Word=$tok<br />";
$tok = strtok(" \n\t");
}