PHP字符串

时间:2020-02-23 14:42:03  来源:igfitidea点击:

在本教程中,我们将学习PHP字符串。

什么是字符串?

简单来说,字符串是一个字符序列。

在PHP中,我们通过将字符括在单引号和双引号中来创建字符串。
以下是一些字符串示例。

$name = 'theitroad';
$country = "Shanghai";

注意!当我们将字符串括在单引号中时,PHP会将其用作完全类型。
另一方面,如果将字符串用双引号引起来,那么我们将获得一些额外的函数,例如在字符串内包括变量名和转义序列。

在下面的示例中,我们使用单引号。

$x = 10;

//single quote string
echo 'Value of x = ' . $x;

上面的代码将打印" x的值= 10"。

通过使用双引号,我们可以将变量$x放其中,如下所示。

$x = 10;

//single quote string
echo "Value of x = $x";

上面的代码将打印" x的值= 10"。
这是因为在双引号内遇到$x时,PHP会将其替换为该值。

获得相同结果的另一种方法是将变量括在花括号中。

$x = 10;

//single quote string
echo "Value of x = {$x}";

上面的代码还将生成相同的输出" x = 10的值"。

转义序列

转义序列是我们在字符串中使用的特殊字符。
它们具有特殊含义,并且以\字符开头。
例如,如果要显示水平制表符,则使用\ t转义序列。

以下是一些常用的转义序列。

转义序列含义
\'单引号
\"双引号
\\反斜杠字符
\ n换行符
\r回车符
\t水平制表符

连接字符串

我们可以使用点运算符连接两个字符串。
以下是一些示例。

$first_name = "theitroad";
$last_name = "theitroad";

$full_name = $first_name . " " . $last_name;

echo "Hello, I am {$full_name}.";

上面的代码将显示"您好,我是theitroad"。

字符串的长度-strlen()

我们使用strlen()函数来查找字符串的长度,即字符串中的字符总数。

$month = "October";

$len = strlen($month);

echo "Total number of characters = {$len}";

上面的代码将显示"字符总数= 7"。

访问字符串字符

字符串由一系列字符组成。
第一个字符从索引0开始。

例如,考虑以下字符串" Hello"。
它由5个字符组成。
第一个字符" H"位于索引0。
第二个字符" e"位于索引1。
最后一个字符" o"位于索引4。

为了在索引N处打印字符串的字符,我们编写$x [N],其中$x是保存字符串值的变量。

在下面的示例中,我们将打印第三个字符。
注意!第三个字符在索引2处。

$month = "October";

echo $month[2];		//output t

搜索字符串-strstr()

为了发现文本是否出现在给定的字符串中,我们使用了strstr()函数。
我们传递两个参数。
第一个参数是要搜索的字符串。
第二个参数是要搜索的文本。

如果找到了文本,则该函数将从所找到的文本的开头到字符串的结尾返回部分字符串。
否则,它将返回" false"。

$text = "lo";
$st = "Hello World!";

echo strstr($st, $text);	//lo World!

函数strstr()区分大小写。
对于不区分大小写的函数,请使用stristr函数。

找到位置-strpos()

该函数将在字符串中搜索给定的文本,如果找到则返回该文本第一个字符的索引,否则将返回" false"。

$text = "el";
$string = "Hello World!";

echo strpos($string, $text);

上面的代码将打印1,因为在索引1处找到" el"。
请记住,索引从0开始。

函数strpos()区分大小写。
如果不区分大小写,请使用函数stripos。

从反向找到位置-strrpos()

此函数将从反向返回字符串中文本的第一个出现索引。

$text = "l";
$string = "Hello World!";

echo strrpos($string, $text);

上面的代码将打印9,因为它是字符串中倒数第一个出现的" l"的索引。

函数strrpos()区分大小写。
对于不区分大小写的函数,请使用strripos函数。

计算字符串中的文本-substr_count()

此函数将计算字符串中文本出现的总次数。

$text = "code";
$string = "I love code. You love code. We love code!";

echo substr_count($string, $text);

上面的代码将打印3。

如果文本是单词的一部分,那么也将考虑它。

$text = "he";
$string = "He and She";

echo substr_count($string, $text);

上面的代码将打印1。
这是因为单词" She"中存在" he"。
另请注意,由于大小写不同," He"不等于" he"。

搜索字符-strpbrk()

此函数检查字符串是否包含任何一个字符。
如果找到匹配项,则此函数将返回从第一个匹配字符到字符串结尾的字符串部分。
否则它将返回false。

$char = "@#!%";

$string = "Hello! This is a sample #string.";

echo strpbrk($string, $char);

上面的代码将返回"!这是一个示例#string"。
因为$string包含char!和#。

替换所有出现的字符串-str_replace()

此函数将替换所有出现的一个字符串。

原始字符串保持不变,仅返回修改后的副本。

$string = "Java is a programming language. Java is awesome!";

$replace = "Java";

$replace_with = "PHP";

echo str_replace($replace, $replace_with, $string);

上面的代码将显示" PHP是一种编程语言。
PHP非常棒!"。

函数str_replace()区分大小写。
如果不区分大小写,请使用函数str_ireplace。

替换字符串的一部分-substr_replace()

此函数将替换目标字符串的特定部分。

原始字符串保持不变,仅返回修改后的副本。

$string = "8 A.M. radio!";

$replacement = "P.M.";

$start_index = 2;

echo substr_replace($string, $replacement, $start_index);

上面的代码将打印以下"晚上8点"。
因为它用$replacement" PM。
"替换了从索引2到字符串$string的所有字符。

substr_replace()从$start_index到字符串末尾用$replacement替换所有字符。

如果我们只想替换一部分字符串,则可以传递第四个参数。

$string = "8 A.M. radio!";

$replacement = "P.M.";

$start_index = 2;

$limit = 4;

echo substr_replace($string, $replacement, $start_index, $limit);

上面的代码将开始替换索引2中的所有字符,并将仅用" P.M."放置4个字符。
因此,以上代码的输出将是"晚上8点收音机!"。

字符替换-strtr()

此函数采用3个参数,即要使用的字符串,要替换的字符串和要替换为的字符集。

原始字符串保持不变,仅返回修改后的副本。

$string = "Hello World!";
$target_characters_string = " !";
$replacement_characters = "-_";

echo strtr($string, $target_characters_string, $replacement_characters);

上面的代码将用"-"连字符和所有"!"替换所有""空格字符感叹号,下划线字符" "。
因此,上面的输出将为" Hello-World
";

大写字母-strtoupper()

要将字符串的所有字符都转换为大写,我们使用strtoupper()函数。

$str = "Hello!";

echo strtoupper($str);

上面的代码将打印" HELLO!"。

小写字母-strtolower()

要将字符串的所有字符都转换为小写,我们使用strtolower()函数。

$str = "Hello!";

echo strtolower($str);

上面的代码将显示" hello!"。

使第一个字符大写-ucfirst()

此函数会将字符串的第一个字符转换为大写。

$str = "hello!";

echo ucfirst($str);

上面的代码将显示" Hello!"。

使第一个字符小写-lcfirst()

此函数会将字符串的第一个字符转换为小写。

$str = "HELLO!";

echo lcfirst($str);

上面的代码将显示" hELLO!"。

使每个单词的第一个字符大写-ucwords()

此函数会将字符串中每个单词的第一个字符转换为大写。

$str = "hello world!";

echo ucwords($str);

上面的代码将打印" Hello World!"。

修剪字符串-trim()

此函数将删除字符串开头和结尾的空格。

$str = "   Hello World!   ";

echo trim($str);

上面的代码将打印" Hello World!"。

向左修剪-ltrim()

此函数将从字符串开头删除空格。

$str = "   Hello World!   ";

echo ltrim($str);

上面的代码将显示" Hello World!"。

右修剪-rtrim()

此函数将删除字符串末尾的空格。

$str = "   Hello World!   ";

echo rtrim($str);

上面的代码将显示" Hello World!"。

字符串填充-str_pad()

此函数用于在字符串中填充字符。

$str = "Hi";
$width = 5;

echo str_pad($str, $width);

上面的代码将字符串$str填充为空白(默认),最大长度为5.因此输出为Hi

默认填充位于字符串的右侧(末尾),用于填充的默认字符为空格。

要用特定字符填充字符串,我们传递第三个参数。

$str = "Hi";
$width = 5;

echo str_pad($str, $width, "*");

输出将为" Hi ***"。

宽度决定最终长度。

$str = "Hi";
$width = 5;

echo str_pad($str, $width, "1245");

输出将为" Hi123"。
由于字符串的最终长度为5,因此最后两个字符" 45"将被截断。

我们可以传递第四个参数来控制填充位置。

$str = "Hi";
$width = 5;

echo str_pad($str, $width, "**", STR_PAD_RIGHT);

这将执行右填充,输出将为" Hi ***"。

$str = "Hi";
$width = 5;

echo str_pad($str, $width, "**", STR_PAD_LEFT);

这将执行左填充,输出将为" *** Hi"。

$str = "Hi";
$width = 5;

echo str_pad($str, $width, "**", STR_PAD_BOTH);

这将执行右填充,输出将为" * Hi **"。

字符串格式-printf()

printf()函数用于打印输出。
在下面的示例中,我们将打印" Hello World!"。

printf("Hello World!");

我们还可以在printf()中使用类型说明符来指定变量的类型,以便格式化输出。

在下面的示例中,我们将整数变量$x设置为10。
我们正在使用类型说明符%d打印$x变量的值。

$x = 10;

printf("Value of x = %d", $x);

上面的代码的输出是" x的值= 10"。
$x的值放在%d的位置。
类型说明符%d告诉我们$x的类型是整数。

以下是类型说明符及其含义的列表。

类型说明符含义
%b将参数视为整数,并将其格式化为二进制数。
%c将参数视为整数,并使用该ASCII值将其格式化为字符。
%d将参数视为整数,并将其格式化为带符号的十进制数字。
%e将自变量设置为科学计数法。示例2e + 9
%f将参数格式设置为浮点数。
%o将参数视为整数,然后将其输出为八进制数。
%s将参数格式设置为字符串。
%u将参数视为整数,然后将其输出为无符号十进制数。
%x将参数视为整数,并以小写形式将其输出为十六进制数。
%X将自变量视为整数,并以十六进制数字大写输出。
%%显示%符号。对此不需要任何参数。

$name = "theitroad";
$time = "10am";
$day = "Sunday";

printf("%s will upload his new YouTube video at %d on %s.", $name, $time, $day);

使用printf()打印签名号码

默认情况下,printf()将显示带有(-)符号的负数,但不会显示带有(+)符号的正数。
要显示正确的标志,请使用以下内容。

printf("%+d", 10);	//this will print "+10"
printf("%+d", -10);		//this will print "-10"

使用printf()填充输出

我们还可以通过插入填充说明符来填充输出。

在下面的示例中,我们在数字前加0开头,字符总数为6。

$x = 10;
printf("%06d", $x);

要使用特殊字符填充,请使用撇号('),后跟要使用的字符。

在下面的示例中,我们用前导号填充数字,字符总数为6。

$x = 10;
printf("%'#6d", $x);

10

默认情况下,填充始终位于左侧。
要在右侧添加填充,我们使用(-)符号。

在下面的示例中,我们在数字后面加上#号,字符总数为6。

$x = 10;
printf("%'#-6d", $x);

使用printf()的数字精度

我们还可以使用精度说明符来限制输出中所需的小数位数。

在下面的示例中,我们打印PI = 22/7的值。

$pi = 22/7;
printf("%f", $pi);

3.142857

为了将小数位数限制为两位数,我们使用%.2f

$pi = 22/7;
printf("%.2f", $pi);

为了填充前导0,将字符总数限制为5,还将小数位限制为2,我们使用以下命令。

$pi = 22/7;
printf("%05.2f", $pi);

为了存储结果,请使用sprintf()

为了将结果存储在变量中以备后用,我们使用了sprintf()函数。
此函数与printf()完全相同,但是不打印结果,而是返回结果字符串。

$time = 8;
$txt = "Radio!";

$str = sprintf("This is %d A.M. %s", $time, $txt);

上面的代码将保存"这是上午8点广播!"在变量$str中。