php字符串
字符串的声明(数据类型)
1.可以使用双引号,也可以使用单引号
双引号可以解析变量,也可以解析所有转义字符
2.分割 匹配 查找 替换
$str = 'abcdefghigklmn'; $s = ''; for($i=0;$i<strlen($str);$i++){ if($i%2==0){ $s .= $str{$i}; } } echo $s.'<br>'; $str2 = 'hello'; echo $str2{2}.'<br>';//l$str2[2] = 'world'; echo $str2.'<br>'; //'hewlo' $int = array("one"=>100,"two"=>200); echo "aaaaaaaa$int[one]aaaaaaa<br>";//可以解析 echo "aaaaaaaa{$int["one"]}aaaaaaa<br>";//可以解析 echo "aaaaaaaa".$int["one"]."aaaaaaa<br>";//可以解析 echo "aaaaaaaa$int['one']."aaaaaaa<br>";//不可以解析,如果对于关联数组下标使用引号,就必须使用花括号
特点:如果是其它类型的数据,也可以使用字符串函数,先将其它类型自动转成字符串再处理。
字符串可以像数组一样,通过每个下标,来访问每个字符,但不是数组(数组也可以通过{}来访问成员)echo count('abc').'<br>'; //1
常用的字符串有
1.中文截取:mb_substr()
mb_substr( $str, $start, $length, $encoding )
$str,需要截断的字符串
$start,截断开始处,起始处为0
$length,要截取的字数
$encoding,网页编码,如utf-8,GB2312,GBK
$str='脚本之家:http://www.jb51.net'; echo mb_substr($str,0,4,'utf-8');//截取头5个字,假定此代码所在php文件的编码为utf-8
//结果显示:脚本之家
2.获取中文长度:mb_strlen()
mb_strlen( $str, $encoding )
$str,要计算长度的字符串
$encoding,网页编码,如utf-8,GB2312,GBK
$str='脚本之家:http://www.jb51.net'; echo mb_strlen($str,'utf-8');//假定此代码所在php文件的编码为utf-8 //24
strlen()、mb_strlen()函数 //测试时文件的编码方式要是UTF8 $str='中文a字1符'; echo strlen($str).'<br>';//14 echo mb_strlen($str,'utf8').'<br>';//6 echo mb_strlen($str,'gbk').'<br>';//8 echo mb_strlen($str,'gb2312').'<br>';//10
$str = '/web/a/b/index.php'; $pos = strrpos($str,'/'); //获取文件名 echo substr($str, $pos+1); echo basename($str); //index.php //获取路径名 echo substr($str,0,9); echo dirname($str); // /web/a/b
3.反转字符串:strrev()函数
echo strrev("I love Shanghai!"); //!iahgnahS evol I
4.分割字符串:chunk_split()函数
在每个字符后分割一次字符串,并在每个分割后添加 ".":
$str = "Shanghai"; echo chunk_split($str,1,"."); //S.h.a.n.g.h.a.i.
在每个双引号(")前添加反斜杠:
$str = addslashes('Shanghai is the "biggest" city in China.'); echo($str); //Shanghai is the \"biggest\" city in China.
6.把预定义的字符转成html实体:htmlspecialchars() 函数
php $str = "This is some <b>bold</b> text."; echo htmlspecialchars($str); 浏览器输出This is some <b>bold</b> text. 源代码:This is some <b>bold</b> text.
移除字符串两侧的字符("Hello" 中的 "He" 以及 "World" 中的 "d!"):
$str = "Hello World!"; echo $str . "<br>"; echo trim($str,"Hed!"); // Hello World! // llo Worl
8.substr_replace() 函数用于把字符串的一部分替换为另一个字符串,返回混合类型。
echo substr_replace('abcdef', '###', 1); //输出 a### echo substr_replace('abcdef', '###', 1, 2); //输出 a###def echo substr_replace('abcdef', '###', -3, 2); //输出 abc###f echo substr_replace('abcdef', '###', 1, -2); //输出 a###ef
echo str_replace("world","earth","Hello world!"); //输出 Hello earth! //替换多个,且第二个参数为空字符 echo str_replace("o","","Hello world!"); //输出 Hell wrld! //使用数组 $arr = array("e", "o"); $arr2 = array("x", "y"); echo str_replace($arr, $arr2, "Hello World of PHP", $i); //输出 Hxlly Wyrld yf PHP echo $i; //输出4
正则替换 preg_replace()函数
$str = 'linux is very much php'; echo preg_replace('/linux|php/','java',$str); //java is very much java
$date = '08/26/2003'; echo preg_replace('/(\d+)\/(\d+)\/(\d+)/','$3/$1/$2',$date); //2003/08/26
//查找 "Shanghai" 在 "I love Shanghai!" 中的第一次出现,并返回字符串的剩余部分: echo strstr("I love Shanghai!","Shanghai"); //Shanghai! //第三个参数为true时并返回字符串的前面部分 echo strstr("I love Shanghai!","Shanghai",true); //I love
11.计算某段字符串中,某个字符出现的次数substr_count()函数
$text='gdfgfdgd59gmkblg'; echo substr_count($text,'g'); //5
12.函数查找字符串在另一字符串中第一次出现的位置:strpos()函数,区分大小写
echo strpos("You love php, I love php too!","php");
//9
13.查找 "php" 在字符串中最后一次出现的位置:strrpos(),不区分大小写
echo strrpos("You love php, I love php too!","php"); //21
获取文件名
$str = '/web/a/b/index.php'; $pos = strrpos($str,'/'); echo substr($str, $pos+1); //index.php
14.preg_match() 函数用于进行正则表达式匹配,成功返回 1 ,否则返回 0 。
//模式分隔符后的"i"标记这是一个大小写不敏感的搜索 if (preg_match("/php/i", "PHP is the web scripting language of choice.")) { echo "查找到匹配的字符串 php。"; } else { echo "未发现匹配的字符串 php。"; } //查找到匹配的字符串 php。
preg_match() 第一次匹配成功后就会停止匹配,如果要实现全部结果的匹配,即搜索到subject结尾处,则需使用 preg_match_all() 函数。
$str = "pap is pbp and pcp"; preg_match_all('/p.p/', $str, $ms); echo "<pre>"; print_r($ms); echo "</pre>"; /*Array ( [0] => Array ( [0] => pap [1] => pbp [2] => pcp ) ) */
15.pathinfo() 返回一个关联数组包含有 path 的信息
$ref = 'http://localhost/a/b/index.php'; $arr = pathinfo($ref); echo "<pre>"; print_r($arr); echo "</pre>"; /* Array ( [dirname] => http://localhost/a/b url路径 [basename] => index.php 完整文件名 [extension] => php 文件后缀 [filename] => index 文件名 ) */
$ref = 'http://localhost/a/b/index.php?id=10'; $arr = parse_url($ref); $arr2 = pathinfo($ref); print_r($arr); /*Array ( [scheme] => http 协议 [host] => localhost 主机 [path] => /a/b/index.php 路径 [query] => id=10 参数 )*/