PHP—字符串
目录
字符串三种定义方式
在平常情况下,使用单引号和双引号包含字符串是一样的,如果在字符串里边出现了变量名,如果想输出变量,则必须使用双引号,且最好在变量名两端加上{ },{ }并不会被输出。
字符串的输出
$name='张宇杰';
$sex='男';
$age=20;
echo "我的姓名:{$name},性别:{$sex},年龄:{$age}";
echo "<br>";
echo "我的姓名:".$name.",性别:".$sex.",年龄:".$age;
输出结果:
我的姓名:张宇杰,性别:男,年龄:20
我的姓名:张宇杰,性别:男,年龄:20
输出HTML代码
PHP是一个Web编程语言,在编程过程中难免会遇到用echo来输出大段的html和javascript脚本的情况,如果用传统的输出方法——按字符串输出的话,肯定要有大量的转义符来对字符串中的引号等特殊字符进行转义,以免出现语法错误。如果是一两处还可以容忍,但是要是一个完整的html文本或者是一个200行的js我想是谁都会崩溃的。这就是PHP为什么要引入一个定界符的原因——至少一大部分原因是这样的。
PHP中的定界符格式是这样的:
<<<Eof
……
Eof;
$str=<<<BOF
<table border="2">
<tr>
<td width='60'>{$name}</td>
<td>{$sex}</td>
<td>{$age}</td>
<tr>
</table>
BOF;
echo $str;
输出结果:
输出JavaScript代码
$a='张三';
$str2=<<<STR
<script>alert("{$a}你好")</script>
STR;
echo $str2;
输出结果:
die(exit)和return的区别
PHP中终止脚本运行有三种方式,主脚本程序中使用return,脚本中使用die()和exit(),三者所在的脚本文件之后的代码都不会执行。
- return:return是一个语法结构,而不是一个函数,如果一个函数中含有return语句,当调用此函数时,函数的执行只会到return这一步,return之后的所有语句都不会执行,并将return的参数作为函数值返回。
- die:终止整个脚本的运行,使当前执行停止到这里,并且不再进行下去。如果有参数,会直接打印出来(只针对字符串)。
- 在函数外部,return和die没有什么区别,但是在函数内部return只是终止函数本身并返回函数值,die终止整个脚本的运行。
字符串输出语句
- echo--输出一个或者多个字符串或变量值,他是php语句,不是函数,没有返回值。
- print--用于输出一个或者多个字符串或变量值的信息。他只能打印出简单类型变量的值(如int,string),不能打印数组和对象。print有返回值,并且都是1。
- print_r--是函数,用于打印关于变量的易于理解的信息。能够打印复杂的数据类型,比如可以打印数组和对象。
- printf()--用于输出格式化的字符串。
- var_export()--函数用于输出或返回一个变量的字符串表示
- var_dump()--函数用于显示关于一个或多个表达式的结构信息,包括表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。直接输出到浏览器。
获取字符串长度
strlen()--获取字符串字节数
语法:strlen ( string
$string
)返回值:成功则返回字符串
string
的字节数;如果string
为空,则返回 0。$str='张三ab'; //utf-8编码下,一个汉字占3个字节 echo strlen($str); //输出8
mb_strlen()--获取字符串的长度
语法:mb_strlen ( string
$str
[, string$encoding
] )参数:
str:
要检查长度的字符串。encoding:encoding
参数为字符编码。如果省略,则使用内部字符编码。返回值:返回具有
encoding
编码的字符串str
包含的字符数。多字节的字符被计为1。如果给定的encoding
无效则返回FALSE
。$str='张三ab'; echo mb_strlen($str,'utf-8'); //返回字符个数,输出4
字符串去除特殊字符
trim()--去除字符串首尾处的空白字符(或者其他字符)
语法:trim (
$str
[,$charlist
= " \t\n\r\0\x0B" ] )此函数返回字符串
str
去除首尾空白字符后的结果。如果不指定第二个参数, trim() 将去除这些字符:
- " " (ASCII 32 (0x20)),普通空格符。
- "\t" (ASCII 9 (0x09)),制表符。
- "\n" (ASCII 10 (0x0A)),换行符。
- "\r" (ASCII 13 (0x0D)),回车符。
- "\0" (ASCII 0 (0x00)),空字节符。
- "\x0B" (ASCII 11 (0x0B)),垂直制表符。
$str=' 123456 '; echo var_dump($str); //string ' 123456 ' (length=8) echo var_dump(trim($str)); //string '123456' (length=6) $str2="\t123456\r\n"; //双引号中的转义符号是可以转义的,单引号中的转义符号直接输出 echo var_dump($str2); //string ' 123456' (length=9) echo var_dump(trim($str2)); //string '123456' (length=6)
ltrim()--删除字符串开头的空白字符(或其他字符)
rtrim()--删除字符串末端的空白字符(或者其他字符)
str_replace()--子字符串替换
语法:str_replace (
$search
,$replace
,$subject
[, int&$count
] )该函数返回一个字符串或者数组。该字符串或数组是将
subject
中全部的search
都被replace
替换之后的结果。参数:
search
:查找的目标值,也就是needle。一个数组可以指定多个目标。replace:search
的替换值。一个数组可以被用来指定多重替换。subject:
执行替换的数组或者字符串。也就是 haystack。如果subject
是一个数组,替换操作将遍历整个subject
,返回值也将是一个数组。count:
如果被指定,它的值将被设置为替换发生的次数。
nl2br()--在字符串所有新行之前插入HTML换行标记
语法:nl2br(string
$string
[, bool$is_xhtml
= true ] )在字符串
string
所有新行之前插入 '<br />' 或 '<br>',并返回。$str=<<<STR 张三,男,20 李四,女,17 王五,男,18 STR; echo nl2br($str);
输出结果:
张三,男,20<br /> 李四,女,17<br /> 王五,男,18
strpos()--查找字符串首次出现的位置
语法:strpos(string
$haystack
,$needle
[, int$offset
= 0 ] )参数:
haystack
:在该字符串中进行查找。needle
:如果needle
不是一个字符串,那么它将被转换为整型并被视为字符的顺序值。offset
:如果提供了此参数,搜索会从字符串该字符数的起始位置开始统计。和 strrpos() 、 strripos() 不一样,这个偏移量不能是负数。返回值:
如果找到,就返回在字符串中的起始位置,如果没找到,就返回false,在进行判断时应该使用===(完全等于),否则判断结果可能有错误。
生成4位随机验证码案例
$str = "abcdefghijklmnopqrstuvwxyz0123456789";
$len = strlen($str);
$yzm = '';
for ($i = 0; i < 4; i++){
$rand = mt_rand(0,$len-1);
$yzm .= substr($str, $rand ,1);
}
echo $yzm;
上机任务
任务1
请写一个函数,实现以下功能:字符串“open_door” 转换成 “OpenDoor”、”make_by_id” 转换成 ”MakeById”
<?php header('content-type:text/html;charset=utf-8'); function change($str) { $str = str_replace ( "_", " ", $str ); $str = ucwords ( $str ); $str = str_replace ( " ", "", $str ); return $str; } echo change("open_door"); echo '<br>'; echo change("make_by_id"); ?>
输出结果
OpenDoor MakeById
任务2
页面从数据库获取了title字段,然后在前台页面显示
比如字符串 为: "我校经济贸易学院与石家庄顺捷财税咨询有限公司签订校企合作协议",现在需要判断如果超过15个字符 后面用“...“ 代替,如果少于15个字符的话 则不用...<?php header('content-type:text/html;charset=utf-8'); $title = '我校经济贸易学院与石家庄顺捷财税咨询有限公司签订校企合作协议'; $len = mb_strlen($title); if($len>=15){ $str = mb_substr($title,0,15).'...'; echo $str; }else{ echo $title; } ?>
输出结果
我校经济贸易学院与石家庄顺捷财...