PHP学习笔记4——字符串

第四章 字符串

1.单引号和双引号的区别

在使用单引号字符串时,字符串中需要转义的特殊字符只有反斜杠和单引号本身,单引号不能识别插入的变量。相比双引号,这种定义字符串的方式不但直观而且速度快。

<?php
echo 'hello world \\ test'; // hello world \ test

// 转义单引号
echo 'let\'s go'; // let's go

echo 'This is a test'; // This is a test

$a = 'hello';

// 单引号不会解析变量$a的值
echo '$a world'; // $a world

echo "$a world"; // hello world
?>

使用双引号定义的字符串可以解析其中的变量。双引号还有一些转义序列,如表1-1所示。

表1-1 双引号转义序列
| 转义序列 | 字符 | 转义序列 | 字符 | | :------: | :----: | :------: | :------: | | \n | 换行符 | \\\ | 反斜杠 | | \r | 回车符 | \\$ | 美元符号 | | \t | 制表符 | \\" | 双引号 |
<?php
echo "I dont't like\ it\\"; // I dont't like\ it\

echo "It takes me \$10.25 \t"; // It takes me $10.25

$name = 'test';

echo "\"$name\" is important"; // "test" is important

?>

2.字符串连接符

PHP中使用“.”来连接两个字符串。

<?php
$str1 = 'hello';
$str2 = ' world';
echo $str1.$str2; // hello world
?>

3.字符串操作

字符串常用处理函数包括:字符串的查找、替换、截取、去空格、转义等。

3.1改变字符串大小写

可以使用以下函数来改变字符串的大小写:

  • Ucfirst将字符串首字母转换成大写
  • Lcfirst将字符串首字母转换成小写
  • Ucwords将字符串中每个单词的首字母转换成大写
  • Strtoupper将字符串转换成大写
  • Strtolower将字符串转换成小写
<?php
$str = 'hello world, php'."\n";
echo ucfirst($str); // Hello world, php
echo ucwords($str); // Hello World, Php
echo strtoupper($str); // HELLO WORLD, PHP

$str2 = "Hello World";
echo strtolower($str2); // hello world
echo lcfirst($str2); // hello World
?>
3.2查找字符串
3.2.1 stripos

查找字符串中某部分字符串首次出现的位置(不区分大小写)

语法如下:

int stripos(string $haystack, string $needle[, int $offset = 0])

参数说明

  • haystack:在该字符串中查找
  • needle:needle可以是单字符或多字符测字符串。如果needle不是一个字符串,它将被转换成整型,并被视为字符串顺序值。
  • offset:指定从haystack中开始查找的位置,返回的位置数字值仍然相对于haystack的起始位置。(字符串位置起始于0)
<?php
$c = 'c';
$str1 = 'xyz';
$str2 = 'ABC';
$pos1 = stripos($str1, $c);
$pos2 = stripos($str2, $c);
var_dump($pos1); // bool(false)
var_dump($pos2); // int(2)
?>
3.2.2 strpos

查找字符串首次出现的位置(区分大小写)。

语法如下:

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

**说明:**和strrpos()、strripos不一样,strpos的偏移量不能是负数。

<?php
$find = 'c';
$f1 = 'C';
$str = 'AbcaBC';
$pos1 = strpos($str, $find);
$pos2 = strpos($str, $f1);
var_dump($pos1); // int(2)
var_dump($pos2); // int(5)
?>
3.2.3 strripos

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

语法如下:

int strripos(string $haystack, string $needle [, int $offset = 0])

**说明:**负数偏移量将使得查找从字符串的起始位置开始,到offset位置为止。

<?php
$f1 = 'w';
$f2 = 'e';
$str = 'Hello World';
$pos1 = strripos($str, $f1);
$pos2 = strripos($str, $f2);
var_dump($pos1); // int(6)
var_dump($pos2); // int(1)
?>
3.2.4 strrpos

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

语法如下:

int strrpos(string $haystack, string $needle [, int $offset = 0])

**说明:**如果是负数的偏移量,将会导致查找在字符串结尾处开始的计数位置处结束。

<?php
$f1 = 'c';
$f2 = 'C';
$str = 'ABCabcCBA';
$pos1 = strrpos($str, $f1);
$pos2 = strrpos($str, $f2);
$pos3 = strrpos($str, $f2, -5);
var_dump($pos1); // int(5)
var_dump($pos2); // int(6)
var_dump($pos3); // int(2)
?>
3.3替换字符串
3.3.1 str_ireplace()和str_replace()函数

str_ireplace()和str_replace使用新的字符串替换原来字符串中指定的特定字符串,str_replace区分大小写,str_ireplace()不区分大小写。两者语法相似,str_ireplace()的语法如下:

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

**说明:**该函数返回一个字符串或数组。该字符串或数组将subject中全部的search用replace替换(忽略大小写)之后的结果。参数count表示执行替换的次数。

<?php
$str = 'hello, world, hello, php';
$replace = 'hi';
$search = 'hello';
echo str_ireplace($search, $replace, $str); // hi, world, hi, php
?>
3.3.2 substr_replace()函数

substr_replace()函数的语法如下:

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

说明:

  • substr_replace()在字符串string的副本中将由start和可选的length参数限定的子字符串使用replacement进行替换。
  • 如果start为正数,替换将从string的start位置开始。
  • 如果start为负数,替换将从string的倒数第start个位置开始。
  • 如果设定了length参数,且为正数,则表示string中被替换的子字符串的长度。
  • 如果length设置为负数,则表示代替换的子字符串结尾处距离string末尾的字符个数。如果没有提供此参数,默认为strlen(string)(字符串的长度)
<?php
$str = 'hello, world, java, php, python, hello';
$replace = 'hi';
echo substr_replace($str, $replace, 0, 6); // hi world, java, php, python, hello
echo "\n";
echo substr_replace($str, $replace, 0, -1); // hio
echo "\n";
echo substr_replace($str, $replace, -1, 6); // hello, world, java, php, python, hellhi
echo "\n";
echo substr_replace($str, $replace, 0); // hi
?>
3.4 截取字符串

PHP中使用substr截取字符串,其语法如下:

string substr(stirng $string, int $start [, int $length])

说明:

  • 其作用是返回字符串string由start和length参数指定的长度为length的子字符串。
  • 如果start是非负数,返回的字符串将从string的start位置开始(从0开始计算)。
  • 如果start是负数,返回的字符串将从string末尾处向前数第start个字符串开始。
  • 如果string的长度小于等于start,则返回false.
<?php
$str = 'Seek the truth from facts.This is a test!';
echo substr($str, 1)."\n"; // eek the truth from facts.This is a test!
// 从末尾开始数第三个位置,开始截取
echo substr($str, -3)."\n"; // st!
echo substr($str, -2, 1)."\n"; // t
echo substr($str, 15)."\n"; // from facts.This is a test!
var_dump(substr($str, 50)); // bool(false)
?>
3.5去除字符串首尾空格和特殊字符

在PHP中,

  • 使用trim()函数可以去除字符串首尾两边的空格或特殊字符
  • 使用ltrim()函数可以去除字符串 左边的空格或特殊字符
  • 使用rtrim()函数可以去除字符串右边的空格或特殊字符
string trim(string $str [, string $character_mask])
string ltrim(string $str [, string $character_mask])
string rtrim(string $str [, string $character_mask])

其中, s t r str是待处理的字符串, character_mask是过滤字符串。如果不指定这两个参数,trim()将去除以下字符:

  • " ",普通空格符
  • “\t”,制表符
  • “\n”,换行符
  • “\r”,回车符
  • “\0”,空字符串
  • “\x0B”,垂直制表符
<?php
$text = "\t\tThese are a few words:)... ";
$binary = "\x09Example string\x0A";
$hello = "Hello World!";
echo trim($text)."\n"; // These are a few words:)...
echo rtrim($text)."\n"; //		These are a few words:)...
echo rtrim($text, " \t.")."\n"; // 		These are a few words:)
echo ltrim($hello, "H")."\n"; // ello World!
// 删除$binary末端的ASCII码控制字符(包含0~31)
echo rtrim($binary, "\x00..\x1F")."\n"; // 	Example string
?>
These are a few words:)...
		These are a few words:)...
		These are a few words:)
ello World!
	Example string
3.6 计算字符串的长度

PHP中使用strlen()函数返回字符串的长度,该函数的语法如下:

int strlen(string $string)
<?php
$str1 = 'abcdefg';
echo strlen($str1); // 7
$str2 = ' ab cd ';
echo strlen($str2); // 7

/**
 * PHP不同编码下,一个中文占的字符长度不同。
 * 1.GBK/gb2312:2个
 * 2.UTF-8/unicode:3个
 */
$str3 = '这是个测试';
echo strlen($str3); // 15
?>

使用mb_strlen()函数统计字符串长度。需要注意的是,mb_strlen并不是PHP核心函数,使用前需要确保在php.ini中加载了php_mbstring.dll,即确保“extension=php_mbstring.dll”这一行存在并且没有被注释掉,否则会出现未定义函 数的问题。

mb_strlen ( string `$str` [, string `$encoding` = mb_internal_encoding() ] )
  • str:要检查长度的字符串。
  • encoding:参数为字符编码。如果省略,则使用内部字符编码。
3.7 转义和还原字符串

PHP中使用addslashes()函数转义字符串。该函数的语法格式如下:

string addslashes(string $str)

**说明:**该函数返回转移后的字符串,在一些特殊字符前加了转移符号“\”。这些字符是:单引号、双引号、反斜杠和NULL。

<?php
$str = "I'm fine.Thank you";
echo addslashes($str); // I\'m fine.Thank you
?>

stripslashes可以还原经过addslashes转义后的字符串。

<?php
$str = "I'm fine.Thank you";
echo addslashes($str); // I\'m fine.Thank you
echo stripslashes(addslashes($str)); // I'm fine.Thank you
?>
3.8重复一个字符串

使用str_repeat()函数可以重复一个字符串,语法如下:

string str_repeat(string $input, int $multiplier)

**说明:**该函数返回input重复multiplier次后的结果。multiplier必须大于等于0。如果multiplier设置为0,则返回空字符串。

<?php
echo str_repeat("^_^", 5); // ^_^^_^^_^^_^^_^
?>
3.9 随机打乱字符串

可使用str_shuffle()函数来随机打乱一个字符串,其语法如下:

string str_shuffle(string $str)

**说明:**str_shuffle()函数打乱一个字符串,使用任何一种可能的排序方案。

<?php
$str = 'abcdefg123';
echo str_shuffle($str)."\n";
echo str_shuffle($str)."\n";
echo str_shuffle($str)."\n";
echo str_shuffle($str)."\n";
?>
132bfdeagc
dfc132geba
ge1f2d3cab
cdeag2f3b1
3.10 分割字符串

可以使用explode()函数将一个字符串分割成另一个字符串,其语法如下:

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

**说明:**此函数返回由字符串组成的数组,每一个元素都是 s t r i n g d e l i m i t e r string的子串,它们被字符串delimiter作为边界点分割出来。 delimiter表示分割字符,如果设置了limit参数且是正数,则返回的数组最多包含limit个元素,而最后那个元素将包含$string剩余的部分。如果limit参数为负数,则返回除最后的-limit个元素外的所有元素。如果limit为0,则会被当作1。

<?php
$color = "red green blue";
$colors = explode(" ", $color);
print_r($colors);
$input = 'hello, world';
print_r(explode(', ', $input));
?>
Array
(
    [0] => red
    [1] => green
    [2] => blue
)
Array
(
    [0] => hello
    [1] => world
)

参考链接:
https://www.cnblogs.com/ryanzheng/p/8285113.html
https://www.jb51.net/article/163832.htm

猜你喜欢

转载自blog.csdn.net/username666/article/details/106452477