php学习笔记04:字符串

字符串

字符串定义语法

1、单引号字符串

2、双引号字符串

*引号方式定义字符串比较适合那些比较短(不超过一行)或者没有结构要求的字符串。如果有结构要求,或者内容超过一行,可以使用以下两种结构定义。

3、nowdoc字符串:

没有单引号的单引号字符串【不支持转义】

$str = <<<'边界符'

       字符串内容

边界符;

4、heredoc字符串:

没有双引号的双引号字符串【支持转义】

$str = <<<边界符

       字符串内容

边界符;

heredoc和nowdoc比引号字符串还是要区别多一点,见下图:

如上图,查看html源码,发现它们完全原封不动100%的尊照字符串定义时的格式。

字符串转义

转义:在计算机通用协议中,有一些特定方式定义的字母字符,系统会特定处理。通常都是用\+字母(单词)。

单引号、双引号字符串区别:

1、*单引号字符串只能识别\'转义符,其他转义符不能识别;【可理解为:单引号字符串不支持转义】;

*双引号字符串识别所有转义符,除了\'转义符。(因为单引号'可以直接出现在双引号字符串中)【可理解为:双引号字符串支持转义

2、双引号字符串因为可以转义$符号(可识别$符号),所以双引号字符串可以解析变量,而单引号字符串不可以。

上图代码清晰显示单引号、双引号字符串区别。即双引号可以解析$变量。

双引号中变量识别的原则:

1系统可以清晰的区分变量本身:不要让系统难以区分,例如

例如上图代码str3中双引号中出现的是$adfg而不是$a。所以系统报错没有定义$adfg。而str2中系统可以轻易区分$a,因此得以正确解析变量。

2给变量加一对大括号,例如:str3="abce{$a}dfg";则系统可以直接解析$a。

结构化定义字符串变量的规则:

1、结构化定义字符串的边界符有条件:

1.1上边界符后面不能跟任何内容。

1.2下边界符必须顶格:在本行最左边。

1.3下边界符后面只能跟英文分号,不能跟任何其他内容。

2结构化定义字符串的内部(边界符之间)的所有内容都是字符串本身、

字符串长度问题

1基本函数strlen():得到字符串长度(字节)

2多字节字符串长度问题:包含中文

3多字节字符串扩展模块:mbstring扩展(mb:multi byte)

首先需要加载php的目标string扩展:打开php.ini修改设置启动该扩展:

存盘,然后重启web服务器。

使用mb_strlen函数获取中文字符个数,效果如下:

注意:使用mb_strlen必须指定字符集'utf-8'以获取中文正确的字符个数。如果不指定,默认是英文字符集(ascii),那么效果就和strlen函数一样了。效果如上图演示代码。

echo '多字节字符串长度函数演示<br>';
/* 设置内部字符编码为 UTF-8 */
mb_internal_encoding("UTF-8");
/* 显示当前的内部字符编码*/
echo mb_internal_encoding().'<br>';
$str1='我爱你中国';
echo $str1.'<br>字符个数='.mb_strlen($str1);
/*如果之前没有使用mb_internal_encoding("UTF-8");指定正确字符编码
就必须在函数中指定编码,写成mb_strlen($str1,'utf-8');才会得到正确结果,否则按英文字符编码计算*/

字符串相关函数 参考手册

1、转换函数:implode【数组合并成1字符串】,explode【将字符串按分割字符分割成数组】,str_split【按长度分割字符串为数组】

implode(连接字符,数组):将数组中的元素添加连接字符合并成一个字符串。示例如下:

$array = array('lastname', 'email', 'phone');
$res = implode(",", $array);

echo $res.'<br>'; // 输出lastname,email,phone

explode(分割字符,目标字符串):将字符串按照分割字符进行分割,变成数组。示例如下:

$pizza  = "piece1 piece2 piece3 piece4 piece5 piece6";
$pieces = explode(" ", $pizza);//用空格分隔
var_dump($pieces);
/*输出
array (size=6)
  0 => string 'piece1' (length=6)
  1 => string 'piece2' (length=6)
  2 => string 'piece3' (length=6)
  3 => string 'piece4' (length=6)
  4 => string 'piece5' (length=6)
  5 => string 'piece6' (length=6)
*/

str_split(字符串,分割长度):将字符串按分割长度转换为数组,示例如下:

$str = "Hello!";
$arr1 = str_split($str);//不指定分隔长度,则默认为1个字符
$arr2 = str_split($str, 2);
print_r($arr1);//输出Array ( [0] => H [1] => e [2] => l [3] => l [4] => o [5] => ! ) 
echo '<br>';
print_r($arr2);//输出Array ( [0] => He [1] => ll [2] => o! ) 
echo '<br>';

2、截取函数:trim,ltrim,rtrim

trim(字符串[,过滤字符]):默认去除首尾空格。也可以去除首尾两边的指定过滤字符。点句首链接见参考手册详细例程。

$str='   adc de fg hijk    ';
echo  trim($str);//输出adc de fg hijk

ltrim():去除左边的。

rtrim():去除右边的

3、截取函数:substr(),strstr()

☆substr(): 返回字符串的子串  

格式:substr ( string $string , int $start [, int $length ] ) : string

返回字符串 string 由 start 和 length 参数指定的子字符串。

参数:

【string】:输入字符串。必须至少有一个字符。

【start】:如果 start 是非负数,返回的字符串将从 string 的 start 位置开始,从 0 开始计算。例如,在字符串 “abcdef” 中,在位置 0 的字符是 “a”,位置 2 的字符串是 “c” 等等。

如果 start 是负数,返回的字符串将从 string 结尾处向前数第 start 个字符开始。

如果 string 的长度小于 start,将返回 FALSE

【length】如果提供了正数的 length,返回的字符串将从 start 处开始最多包括 length 个字符(取决于 string 的长度)。

如果提供了负数的 length,那么 string 末尾处的 length 个字符将会被省略(若 start 是负数则从字符串尾部算起)。如果 start 不在这段文本中,那么将返回 FALSE

如果提供了值为 0FALSE 或 NULL 的 length,那么将返回一个空字符串。

如果没有提供 length,返回的子字符串将从 start 位置开始直到字符串结尾。

以下为一些示例:

echo substr('abcdef', 1);     // bcdef
echo substr('abcdef', 1, 3);  // bcd
echo substr('abcdef', 0, 4);  // abcd
$rest = substr("abcdef", 0, -1);  // 返回 "abcde"
$rest = substr("abcdef", 2, -1);  // 返回 "cde"
$rest = substr("abcdef", -3, -1); // 返回 "de"

strstr(字符串,匹配字符):从指定位置开始,截取到最后(可以用来取文件扩展名)

4大小写转换函数:

strtolower(字符串):转小写

strtouppper(字符串):转大写

ucfirst(字符串):如果字符串首字母是字母,转大写

注意如上图代码,$str字符串首字符是空格,不是字母。所以ucfirst没起效。

ucwords(字符串,[分隔符]):将字符串中每个单词的首字母转换为大写(如果首字符是字母才起效)。详细例程见参考手册。

5、查找函数

strpos():查找字符串首次出现的位置(位置计数从0开始)

strrpos():计算指定字符串在目标字符串中最后一次出现的位置(位置计数从0开始)

6、替换函数

str_replase(查找目标,替换内容,字符串):将目标字符串中部分字符串进行替换。

7、格式化函数

printf():/sprintf():按指定占位符格式输出格式化字符串(类似C语言printf)。占位符见sprintf()参考手册。

8、其他

str_repeat():重复某个字符串N次。

str_shuffle():随机打乱字符串。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值