当前位置: 首页 > 后端技术 > PHP

PHP学习总结String

时间:2023-03-29 18:52:17 PHP

创建PHP支持4种方式创建字符串:单引号、双引号、heredoc语法结构和nowdoc语法结构。1.单引号在单引号字符串中,变量和特殊字符不会被转义和替换,反斜杠和单引号本身除外:echo'Arnoldoncesaid:"I\'llbeback"';#Arnold曾经说过:“我会回来的”echo'YoudeletedC:\\*.*?';#你删除了C:\*.*?2、双引号可以识别字符串中的变量和转义序列:$juice='apple';echo"$juicejuice.";#applejuice.echo"Hello\nWorld!";#Hello#World!3.heredoc的语法结构类似于双引号字符串。结束标签必须写在开头,没有缩进或空格,结束标签的末尾必须有分号;标签之间的变量可以正常解析,但函数不能。通常在输出包含大量HTML文档时使用。$str='heredoc';$html=<<

$str

END;echo$html;####

heredoc

#
##4.nowdoc语法结构类似于heredoc语法结构字符串,但now??doc不解析变量和转义序列。$str='nowdoc';$html=<<<'END'

$str

END;echo$str;####

$str

###字符串在PHP字符串中进行编码,每个字符使用一个字节(在内存中)存储,这意味着PHP只能支持256个字符集,所以不支持Unicode。string在PHP中的实现是一个字节数组加上一个表示缓冲区长度的整数。没有关于如何将字节转换为字符的信息,这取决于程序员。由于PHP并没有具体规定字符串的编码方式,那么字符串是如何编码的呢?答案是字符串将以与脚本文件相同的编码方式进行编码。一般来说,虽然PHP内部不支持Unicode字符集,但是文件支持UTF-8编码,大多数情况下不会有问题,但是遇到字符串编码转换的时候就会出现问题,比如在一个UTF-8编码的PHP文件,程序输出的字符数(6)与实际字符数(2)不相等:echostrlen('China');#6mbstring提供了针对多字节字符串的函数,可以帮助你处理PHP中的多字节编码。另外,mbstring还可以在可能的字符编码之间进行编码转换。因此,当需要对Unicode字符集中的字符串进行操作时,一定要安装mbstring扩展,并使用对应的函数代替原来的字符串函数:echomb_strlen('China','UTF-8');#2mbstringextendsmost所有函数都需要基于一种编码(内部编码)进行处理,请务必统一使用UTF-8编码,大部分可以在PHP.INI中配置。对于PHP字符串编码问题,强烈建议:PHP脚本文件使用UTF-8无BOM编码格式;字符串操作使用mbstring扩展函数;数据库连接和存储使用UTF-8编码;HTML文档使用UTF-8编码。字符串格式化1.字符串去除rtrim()-删除字符串末尾的空白字符(或其他字符)ltrim()-删除字符串开头的空白字符(或其他字符)trim()-删除开头和字符串结尾空白字符(或其他字符)$text="\t\tTheseareafewwords:)...\n";echortrim($text);#"\t\t这些是几个词:)..."echoltrim($text);#"这是几句话:)...\n"echotrim($text);#"这是几句话:)..."$trimmed=trim($hello,"ld");#"HelloWor"2.Formatstringforoutputnl2br()—在字符串中的所有换行符前插入HTML换行符printf()—输出格式化字符串sprintf()—format将转换后的字符串写入变量echonl2br("hello\nworld");#hello#worldprintf('我需要支付$%.02lf',1.3568);#我需要支付$1.36$str=sprintf('我需要支付$%.02lf',1.3568);echo$str;#我需要支付$1.36htmlspecialchars()—将特殊字符转换为HTML实体htmlentities()—将字符转换为HTML转义字符echohtmlspecialchars("Test",ENT_QUOTES);#测试echohtmlentities("A'quote'isbold");#'quote'是粗体3.格式化用于存储stripslashes()的字符串—用反引号引用字符串addslashes()—用反斜杠引用字符串$str="IsyournameO\'reilly?";echostripslashes($str);#你叫O'reilly吗?echoaddslashes($str);#你的名字是O\'reilly吗?4.改变字符串的字母大小写strtolower()—将字符串转换为小写strtoupper()—将字符串转换为大写ucfirst()—将字符串的首字母转换为大写ucwords()—将每个字符串的首字母转换字符串中的单词大写$str="MaryHadALittleLambandSheLOVEDItSo";echostrtolower($str);#玛丽有一只小羊羔,她很喜欢它soechostrtoupper($str);#玛丽有一只小羊羔,她非常喜欢它$foo='helloworld!';$foo=ucfirst($foo);#你好世界!$foo=ucwords($foo);#你好世界!字符串连接和拆分1.explode()使用一个字符串拆分另一个字符串:$pizza="piece1piece2piece3piece4piece5piece6";$pieces=explode("",$pizza);print_r($pieces);#数组([0]=>piece1[1]=>piece2[2]=>piece3[3]=>piece4[4]=>piece5[5]=>piece6)2.implode()或join()将一维数组的值连接成一个字符串:$array=array('lastname','email','phone');回声内爆(',',$数组);#姓,email,phone3.substr()返回字符串的子字符串:echosubstr('abcdef',1);#bcdefechosubstr('abcdef',1,3);#bcdechosubstr('abcdef',-1,1);#f字符串比较1.strcmp()二进制安全字符串比较(区分大小写):echostrcmp('jochen','Jochen');#32,如果str1小于str2return<0;如果str1大于str2,则返回>0;如果两者相等,则返回02.strcasecmp()二进制安全比较字符串(不区分大小写):echostrcasecmp('jochen','Jochen');#03.strnatcmp()使用自然排序算法比较字符串:echostrnatcmp('img12.png','img10.png');#1、字符串查找和替换1.strstr()查找字符串的第一次出现并返回该字符串:echostrstr('name@example.com','@');#@example.com2。strpos()查找字符串的第一次出现:$hello='HelloWorld';if(strpos($hello,'H')!==false){echo'Find';}else{echo'NoFind';}3.str_replace()匹配字符串并替换:$search="world";$replace="上海";$subject="你好,世界!";echostr_replace($search,$replace,$subject);#你好上海4.substr_replace()替换指定位置的字符串:$replace="Shanghai";$subject="Helloworld!";echosubstr_replace($subject,$replace,6);#你好上海正则表达式公式1.preg_match()进行正则表达式匹配:$email='10001110@qq.com';$pattern="/^([a-zA-Z0-9])+([.a-zA-Z0-9_-])*@([.a-zA-Z0-9_-])+([.a-zA-Z0-9_-]+)+([.a-zA-Z0-9_-])$/";if(preg_match($pattern,$email,$match)){echo'匹配成功
';}else{echo'Matchfailed
';}2.preg_match_all()执行全局正则表达式匹配:$str="姓名:JohnPoul
职务:PHP大师";preg_match_all("/(.*)<\/b>/U",$str,$result);print_r($result);#Array([0]=>Array([0]=>JohnPoul[1]=>PHPGuru)[1]=>Array([0]=>JohnPoul[1]=>PHP大师))3.preg_split()通过正则表达式拆分字符串:$keywords=preg_split("/[\s,]+/","hypertextlanguage,programming");print_r($keywords);#Array([0]=>hypertext[1]=>语言[2]=>编程)4.preg_replace()执行正则表达式搜索和替换:$str='fooo';echopreg_replace('/\s\s+/','',$str);#'fooo'$count=0;echopreg_replace(array('/\d/','/\s/'),'*','xp4to',-1,$count);#xp***toecho$count;#3