一、字符串函数
1.格式化字符串,使用printf()
输出到屏幕:printf()
输出到变量:sprintf()
提示:两个函数使用方法一样。
1.1 数据类型转换
printf("This is my number:%o",55);//This is my number:67
转换类型以%开头,后面紧跟字母代表的类型。
注意:在格式控件字符串中可以有多个%,但第二个参数的数目个数必须与%的个数一致。
指定符 | 说明 |
---|---|
d | 以十进制数显示参数 |
b | 以二进制显示一个整数 |
c | 以对等ASCII显示一个整数 |
f | 以浮点数显示一个整数 |
o | 以8进制显示一个整数 |
s | 以字符串显示参数 |
x | 以一个小写十六进制显示一个整数 |
X | 以一个大写十六进制数显示一个整数 |
1.2 填充字符(指定长度,长度不足用特定字符填充)
printf("%04d",36);//输出少于4位,将在前面添加0
//prints 0036
printf("% 4d",36);//输出少于4位,将在前面加空格
//prints 36
printf("%'x4d",36);//除0和空格外,其它填充字符前面必须加单引号
//prints "xx36"
//提示:浏览器不会显示多个空格,可以在输出的外围添加<pre>标记来强制显示空格和新行。
echo "<pre>The spaces will be visible</pre>";
1.3 指定字符串输出长度
echo "<pre>\n";
printf("%20s\n","Books"); //默认右对齐,不足20位,前置补空格。
printf("%20s\n","CDs");
//左对齐:在长度前加减号左对齐
printf("%-20s\n","Left aligned");
echo "</pre>";
1.4 指定精度(四舍五入)
printf("%.2f",5.3333);
//prints "5.33"
echo "\n";
printf("%.2f",5.3353);
//prints "5.34"
1.5 指定参数显示顺序
$dates=array(array('mon'=>12,'mday'=>25,'year'=>2011),
array('mon'=>1,'mday'=>23,'year'=>2012)
);
$format=include("local_format.php");//如果要改变显示格式,只需改变此文件
foreach ($dates as $date){
printf("$format",$date['mon'],$date['mday'],$date['year']);
}
//local_format.php 文件内容
//return "%02d/%02d/%d<br/>";//mm/dd/yyyy
return "%2\$02d/%1\$02d/%3\$d<br/>";//dd/mm/yyyy
//2\$:第二个参数占位符
1.6 将格式化的结果存储到变量
保留2位小数,并将结果存储到$cash变量中
$cash=sprintf("%.2f",21.334454);
echo "You have \$$cash to spend.";
// prints "You have $21.33 to spend."
2.1 字符串就是字符的一个数组,我们可以象访问数组的元素一样访问单个字符。
$test='phpcoder';
echo $test[0];//prints "p"
echo $test[4];//prints "o"
2.2 strlen()获取字符串的长度。一个汉字占3个长度
2.3 strstr(源字符串,查找的子字符串),获取从子符串开始到结尾的全部字符串,找不到则返回false
//比较时区分大写小
echo strstr("pAB7","AB");//prints "AB7"
//不区分大小写
echo stristr("pAB7","ab");//prints "AB7"
//是否包含子字符串
$membership="pAB7";
if(strstr($membership,"AB")){
echo "<p>Your membership expires soon!</p>";
}
2.4 strpos(源字符串,查找的子字符串) ,获取子字符串的索引
//获取子字符串的索引,找不到则返回false
echo strpos($membership,"xy");//prints 4
2.5 substr(字符串,开始索引,长度) 截取子字符串
$test="phpcoder";
echo substr($test,3)."<br/>";//prints "coder"
echo substr($test,3,2)."<br/>";//prints "co"
//注意:如果第二个参数为负数,则索引从末尾开始计算,即从末尾开始取字符
$test="pierre@wanadoo.fr";
if($test=substr($test,-3)==".fr"){
echo ".fr";
}
2.5 strtok(源字符串,分隔字符串),拆分字符串
$test="http://www.google.com/search?";
$test.="hl=en&ie=UTF-8&q=php+development+books&btnG=Google+Search";
$delims="?&";//分隔符可包含多个任意字符
$word=strtok($test,$delims);//第一次调用,并返回找到的第一个分解
while (is_string($word)){//为什么测试返回类型?因为有多个分隔符,
//如果字符串中两个分隔符在一起时,当遇到第一个分隔符时,会导致返回一个空字符串。
if($word){
echo $word."<br/>";
}
$word=strtok($delims);//第二次调用只需传分隔符字符串
}
2.6 trim(),ltrim(),rtrim(),删除字符串空格
2.7 strip_tags(源字符串,需要保留的标记),删除字符串中的标记
$string="<p>\"I <em>simple</em> will not have it,\" <br/>said Mr Dean.</p><p><strong>The end.</strong></p>";
echo strip_tags($string,"<br/><p>");//仅保留"<br/><p>"标记,其它标记全部删除
echo strip_tags($string);//删除全部HTML标记。
2.8 substr_replace(源字符串,插入的新字符串,删除开始索引,删除的字符长度) ,用新的字符替换源指定位置的字符
$membership="mz11xyz";
echo substr_replace($membership,"89",2,2);//prints "mz89xyz" 替换2个字符
echo "\n";
echo substr_replace($membership,"89",2,1);//prints "mz891xyz" 只替换源字符串中一个字符
echo "\n";
echo substr_replace($membership,"89",2);//prints "mz89" 不带长度参数,为删除位置后的全部字符
2.9 str_replace($search,$replace,$source) 替换字符串
注意:参数可以是数组或字符串。
3.0 大小写转换
strtolower() 全部小写
strtoupper() 全部大写
ucwords() 每个单词首字母大写
ucfirst() 第一个字符串的首字母大写
3.1 字符串换行
//将字符串中换行符\n转换成<br/>标记
$str="one line\n";
$str="another line\n";
echo nl2br($str);
//手动将文本换行
$string="As usual you will find me at http://www.witteringonaboutit.com/";
$string.="chat/eating_green_cheese/forum.php. Hope to see you there!";
echo wordwrap($string,24,"<br/>\n");
echo wordwrap($string,24,"<br/>\n",1);//强制按24个字符换行
//注意:必须带第三个参数,否则在浏览器中不会换行。
3.2 explode()将字符串拆分到数组中
$start_date="2012-02-19";
$date_arrary=explode("-",$start_date);
echo($date_arrary[0]);//prints "2012"
二、日期和时间函数
2.1 time()得到当前日期的时间戳
2.2 getdate(时间戳) 返回日期信息的关联数组。不带参数为当前时间戳的日期。
注意:设置默认时区,如果不设置,则得到的时间为错误。
修改php.ini文件
date.timezone=PRC
修改php.ini后重启Apache
或者在代码获时间前增加代码:
date_default_timezone_set(‘PRC’);
2.3 date(格式字符串,时间戳) 格式化时间戳
2.4 mktime(时,分,秒,月,日,年) 创建时间戳
2.5 checkdate() 检测日期。UNIX时间戳是从1970年1月1日开始,此前的日期都是无效的(负的)时间戳