4种不同形式的字符串

单引号字符串

形式:

$s1 = '字符串内容';

特点:只能使用2个转义符: \\(代表一个反斜杠) \’(代表一个单引号)。通常,如果没有其他特殊需求(比如字符串中使用一些转义符,以及一些变量),则推荐使用单引号字符串!

$str1 = 'John\'s  Apple  phone  is  lost.';
$str2 = 'mama  say: "don\'t  speak  with  stranger"';

双引号字符串

形式:

$s1 = "字符串内容";

特点:

1,能使用较为丰富的转义符,包括:\\ \” \n \r \t \$等;

  • \n :代表“换行符”(就是一个新行)
  • \r :代表“回车符”(其实也是一个新行)
  • \t :代表“tab符”,
  • \$:代表“$”本身,因为双引号字符串中能识别(解析)变量,则如果不想要去解析,就用此转义!
$v1 = 10;
echo "结果为:$v1"; // 结果为:10
echo "结果为:\$v1"; //输出内容为: 结果为:$v1

2,“$”符号在其中会被识别为是变量的起始符号,并试图读取变量值——即能识别变量;

3,识别其中变量,建议使用大括号括起来,类似这样:{$变量名}{$数组[‘下标’]}

heredoc字符串

形式:

$v1 = 10;

$str = <<< "AAA"
这里开始写字符串的内容,可以写多行
<br>通常这种字符串适用于“很多行”的字符串形式
<br>比如可以写一大段html,css或js代码。。。,
<br>比如:<input type="text"  name="n1" value='请输出用户名' />
<br><input type="button" value="$v1" />
AAA;

echo $str;

特点:特点跟双引号字符串一样!

注意:标识符结束那一行,只能出现标识符及紧挨着的分号,任何其他字符都不可以出现。

错误演示:右图多了空格,左图多了Tab。
错误演示:右图多了空格,左图多了Tab。

nowdoc字符串

形式:

//演示nowdoc字符串
$str2 = <<< 'BBB'
这里开始写字符串的内容,可以写多行
<br>通常这种字符串适用于“很多行”的字符串形式
<br>比如可以写一大段html,css或js代码。。。,
<br>比如:<input type="text"  name="n1" value='请输出用户名' />
<br><input type="button" value="$v1" />
BBB;

echo $str2;

特点:无特点,是最“纯净”的字符串,写什么就是什么。

heredoc字符串,和nowdoc字符串,适用于表达(描述)一大段内容的字符串,特别是适合于写html部分的代码(含js,css等)。如下:

两者对比
两者对比

转义字符

转义的字符的本质,其实是在一个字符串的语法形式中,如何来表达一些相对特殊的一些字符的问题。

比如:双引号字符串:

$s = "这里字符串内容,要是直接出现双引号就会有语法问题。";

字符串的长度问题

字符串的长度问题,有两个方面的理解:

  1. 一个字符串有几个字符(人可见到的字符个数);
  2. 一个字符串占据多少个字节空间(人不可见)。

几个常识:

  1. 1字节(B)就是8个bit位(最小的存储空间),1KB=1024B,1MB=1024KB,1GB=1024MB。。
  2. 一个英文字符占据1字节空间,gbk编码中1个汉字占据2个字节,utf8编码1个汉字占3字节。

求php字符串的长度,,有两个函数:

  • strlen($str):求该字符串的“字节数”,也就是占据的字节空间大小;
  • mb_strlen($str):求该字符串的“字符个数”(使用该函数,要在php.ini中开启extension=php_mbstring.dll)。
$str1 = 'abcdefg';
$str2 = "abcd\tefg";
$str3 = '我是chinese';

echo "<br>str1的strlen()求得的长度为:" . strlen($str1);
echo "<br>str2的strlen()求得的长度为:" . strlen($str2);
echo "<br>str3的strlen()求得的长度为:" . strlen($str3);

echo "<hr>";

echo "<br>str1的 mb_strlen()求得的长度为:" . mb_strlen($str1);
echo "<br>str2的 mb_strlen()求得的长度为:" . mb_strlen($str2);
echo "<br>str3的 mb_strlen()求得的长度为:" . mb_strlen($str3);

常用字符串函数(重点)

字符串输出:

  • echo: 输出一个或多个字符(不是函数,是语言结构)
  • print:输出一个字符串
  • print_r:输出变量的较为详细的信息
  • var_dump:输出变量的完整信息
$arr1 = ['中', '国', 12, 18];
//echo $arr1;//报错,输出“Array”,没有实际意义
print_r($arr1);
echo "<br>";
var_dump($arr1);

字符串去除与填充:

  • trim:消除一个字符串两端的空白字符或指定字符(空白字符包括:空格,\n, \r,\t等)
  • ltrim:消除一个字符串左边的空白字符或指定字符
  • rtrim:消除一个字符串右边的空白字符或指定字符
  • str_pad:将一个字符串使用指定的字符填充到指定的长度

字符串连接与分割:

  • implode:将一个数组的值连接起来组成一个字符串
  • join:同implode
  • explode: 将一个字符串使用指定的字符分割为一个数组
  • str_split:将一个字符串按指定的长度分割为一个数组

字符串截取:

  • substr:获取一个字符串中指定位置开始指定长度的子字符串
  • strstr:获取一个字符串中某个指定字符首次出现的位置起,到最后结尾处的字符strstr(‘abcd.12.3.txt’, ‘.’); //结果是:”.12.3.txt”
  • strrchr:获取一个字符串中某个指定字符最后一次出现的位置起,到最后结尾处的字符strrchr(‘abcd.12.3.txt’, ‘.’); //结果是:”.txt”

字符串替换:

  • str_replace:将一个字符串中的指定字符,替换为给定的新字符。
  • substr_replace:将一个字符串中指定位置开始的指定个数的字符,替换为给定的新字符。

字符串长度与位置:

  • strlen:获取字符串的字节长度。
  • strpos:获取一个字符串中某个子字符串首次出现的位置,strpos(‘abcd.12.3.txt’, ‘.’); //结果是:4
  • strrpos:获取一个字符串中某个子字符串最后一次出现的位置。
strrpos(‘abcd.12.3.txt’, ‘.’); //结果是:9
strrpos(‘abcd.12.3.txt’, ‘cd’); //结果是:2

字符转换:

  • strtolower:将一个字符串转换为小写。
  • strtoupper:将一个字符串转换为大写。
  • lcfirst:将一个字符串的首字母转换为小写。
  • ucfirst:将一个字符串的首字母转换为大写。
  • ucwords:将一个字符串中的所有单词的首字母转换大写。

特殊字符处理:

  • nl2br:将换行符转换为”<br />”标签字符
  • addslashes: 将一个字符串中的以下几个字符使用反斜杠进行转义:\ ‘ “
  • htmlspecialchars:将html中的特殊字符转换为html实体字符,所示:(& ‘ “ < > )分别转换为:((&amp; &apos; &quot; &lt; &gt; )
  • htmlspecialchars_decode:将html实体字符,转换回原本的字符
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <pre>
    <?php 
$arr1 = ['中', '国', 12, 18];
//echo $arr1;//报错,输出“Array”,没有实际意义
print_r($arr1);
echo "<br>";
var_dump($arr1);

echo "<hr>";

     ?>
    </pre>

    <?php 

    $str1 = nl2br("abc\ndefg");
    echo $str1;

    echo "<hr>";
    $str2 = htmlspecialchars("if a<b && b>c then ok!");
    echo $str2;

     ?>
</body>
</html>

案例:取出如下若干个文件中的图片文件。

// $files = array('abc.gif', '123.txt', 'dir1/gift.webp', 'file1.webp','gif动画制作教程.doc');

//取出如下若干个文件中的图片文件。
//假定:图片后缀为:.png,  .jpg, .gif

$files = array("abc.gif", "ab.v2.3.txt",  "dir1/gift.PNG",  "file1.JPG",  "gif动画制作教程.doc");
$len = count($files);    //得到数组长度
for($i = 0; $i < $len; $i++)
{
    $houzhui = strrchr($files[$i], '.');//得到类似".gif", '.txt'
    $houzhui = substr($houzhui, 1);//从位置1开始取到最后
    $houzhui = strtolower($houzhui);
    if($houzhui == "png" || $houzhui == "gif" || $houzhui == "jpg")
    {
        echo "<br>" . $files[$i];
    }
}