仓酷云

标题: PHP网页编程之PHP字符串操作入门教程 [打印本页]

作者: 谁可相欹    时间: 2015-2-4 00:14
标题: PHP网页编程之PHP字符串操作入门教程
就是管理员可以编辑,删除,回复 等功能,。加入管理员功能要加入登陆系统,慢慢你会想在线添加管理员,慢慢你会让自己的作品更漂亮些,慢慢1个完整的留言板就会出来了,教程|入门教程|字符串   不管哪一种言语,字符串操作都是一个主要的基本,常常是复杂而主要。正像人措辞一样,普通无形体(图形界面),有言语(print 字符串?),明显字符串能注释更多的器材。PHP供应了大批的字符串操作函数,功效壮大,利用也对照复杂,具体请参看 http://cn2.php.net/manual/zh/ref.strings.php . 以下将复杂的讲述它的功效和特征。
弱类型
PHP是弱类型言语,所以其它类型的数据普通可以直策应用于字符串操作函数里,而主动转换成字符串类型,停止处置,如:


PHP:  [Copy to clipboard]
--------------------------------------------------------------------------------
echo substr("1234567", 1, 3);  

PHP:  [Copy to clipboard]
--------------------------------------------------------------------------------
echo substr(123456,1, 3);  
是一样的
界说
普通用双引号或单引号标识一个字符串。好比
PHP:  [Copy to clipboard]
--------------------------------------------------------------------------------
$str = "i love u";
$str = 'i love u';  

它者二者是有一些区分的。后者将一切单引号的内容城市看成字符处置;前者则否则。好比
PHP:  [Copy to clipboard]
--------------------------------------------------------------------------------
$test = "iwind";
$str = "i love $test";
$str1 = 'i love $test';
echo $str; //将失掉 i love iwind
echo $str1; //将失掉 i love $test  

一样的以下两个例子的行动也纷歧样的:
PHP:  [Copy to clipboard]
--------------------------------------------------------------------------------
echo "i love \test"; // 将失掉 i love est,已将\t视为本义
echo 'i love \test'; // 将失掉 i love \test  

从而可以复杂以为双引号里的内容是经由“注释”过的,单引号的是“所见即所得”的。不言而喻,双引号模式的更加天真一些,固然单引号会合用于一些特别的场所,这里就不作论述了。
输入
PHP里的输入最经常使用的是echo,print.二者都不是真实的函数,而是言语机关,所以挪用时不用用双括号(好比echo("test");print("test")).在输入的时分二者都可以完成赋值:
PHP:  [Copy to clipboard]
--------------------------------------------------------------------------------
echo $str="test"; //一方面输入test,一方面把"test"赋给字符串变量 $str
print $str="test";  

二者除名字纷歧样外,仍是有其它区分的。print具有前往值,一向前往1,而echo没有,所以echo比print要快一些:
PHP:  [Copy to clipboard]
--------------------------------------------------------------------------------
$return = print "test";
echo $return; // 输入1  

也正由于这个缘由,print能使用于复合语句中,而echo不克不及:
PHP:  [Copy to clipboard]
--------------------------------------------------------------------------------
isset($str) or print "str 变量不决义"; // 将输入"str 变量不决义"
isset($str) or echo "str 变量不决义";// 将提醒剖析毛病  

echo一次可输入多个字符串,而print则不成以:
PHP:  [Copy to clipboard]
--------------------------------------------------------------------------------
echo "i ","love ","iwind"; // 将输入 "i love iwind"
print "i ","love ","iwind"; // 将提醒毛病  

echo,print还可以输入被称作“文档句法”的字符串,句法如:
PHP:  [Copy to clipboard]
--------------------------------------------------------------------------------
echo <<< 标签称号
...
字符串内容
...
标签称号;  

好比
PHP:  [Copy to clipboard]
--------------------------------------------------------------------------------
echo <<< test
i love iwind
test;  

要注重的是语句入手下手和停止的两个标签称号是一样的,且后一个标签称号前不克不及有空白,即要顶格写。文档句法输入的内容辨认变量称号和经常使用符号,大致形同双引号的感化。
输入echo,print外,PHP还供应了一些格局化字符串的函数,好比printf,sprintf,vprintf,vsprintf,在这里不作详解。
毗连
两个以上的字符串联接用"."操作符,依字符串的按次构成新的字符串。
PHP:  [Copy to clipboard]
--------------------------------------------------------------------------------
$str = "i " . "love " . "iwind";
这里的$str 就是 "i love iwind";字符串。固然,还可使用 .= 操作符:
$str = ""; // 初始化
$str .= "i love iwind";  

这里用到了初始化,是由于不决义变量在利用时会发生一个notice毛病,""或null可以复杂地代表空字符串。
长度
PHP供应strlen函数来盘算字符串的长度:
PHP:  [Copy to clipboard]
--------------------------------------------------------------------------------
$str = "test";
echo strlen($str); // 将输入 4  
有点奇异的是strlen将中日等汉字和全角字符都看成两个或四个长度盘算。好在mbstring或icon两个函数可以匡助处理这个成绩,好比:
PHP:  [Copy to clipboard]
--------------------------------------------------------------------------------
$len = iconv_strlen($str, "GBK");
$len = mb_strlen($str, "GBK");  
注:mbstring模块供应了大批的对含有多字节字符的字符串的处置函数,保举多加使用,因为这篇文章讲的是字符串入门,所以不盘算具体讲解。
分隔与毗连
PHP答应你把一个字符串依照一个分隔符停止分隔成一个数组,或将一个数组组分解一个字符串。看上面的例子:
PHP:  [Copy to clipboard]
--------------------------------------------------------------------------------
$str = "i love iwind";
$array = explode(" ", $str);  
下面的explode函数,就把$str字符串按空格字符停止分隔,了局前往一个数组 $array:array("i", "love", "iwind").与explode函数有相似功效的有:preg_split(), spliti(), split()等函数。
与此相反的,implode和join则能把一个数组联合成一个字符串,他们是具有完整不异功效的函数。
PHP:  [Copy to clipboard]
--------------------------------------------------------------------------------
$array = array("i", "love", "iwind");
$str = implode(" ", $array);
例中的implode函数将数组$array的每一个元素用空格字符停止毗连,前往一个字符串 $str: "i love iwind".  

裁剪
一个字符串首和尾,能够不是你想要的局部,就能够用trim,rtrim,ltrim等函数,分离去除一个字符串两头空格,一个字符串尾部空格,一个字符串首部空格。
PHP:  [Copy to clipboard]
--------------------------------------------------------------------------------
echo trim(" i love iwind "); // 将失掉 "i love iwind"
echo rtrim(" i love iwind "); // 将失掉 " i love iwind"
echo ltrim(" i love iwind "); // 将失掉 "i love iwind "  
其实这三个参数不但可以去除字符串首尾的空格,还可以去除它们的第二个参数指定的字符,如:
PHP:  [Copy to clipboard]
--------------------------------------------------------------------------------
echo trim(",1,2,3,4,", ","); // 将失掉 1,2,3,4 两头的","号被裁失落了。  

有时还会看到有人利用chop这个函数,其实它是rtrim的同义函数。
巨细写
关于英文字母来讲,可以用strtoupper,strtolower将其改变成大写或小写。
PHP:  [Copy to clipboard]
--------------------------------------------------------------------------------
echo strtoupper("i love iwind"); // 将失掉 I LOVE IWIND
echo strtolower("I LOVE IWIND"); // 将失掉 i love iwind  

对照
普通可以用 !=, == 对照两个对象是不是相等,只所以说是两个对象,是由于它们纷歧定全体为字符串,也能够为整型等等。好比
PHP:  [Copy to clipboard]
--------------------------------------------------------------------------------
$a = "joe";
$b = "jerry";
if ($a != $b)
{
echo "不相等";
}
else
{
echo "相等";
}  
假如用 !==,===(可以看到多了一个等号)对照的话,两个对象的类型要严厉相等才干前往true;不然用==,!=则会将字符串主动转换成响应的类型,以便停止对照.
PHP:  [Copy to clipboard]
--------------------------------------------------------------------------------
22 == "22"; // 前往 true
22 === "22"; // 前往false
//正由于如许,所以咱们的法式经常会产生一些想不到的"不测":
0 == "我爱你"; // 前往true
1 == "1 我爱你";// 前往true  

PHP里还有如许一组用于字符串对照的函数:strcmp,strcasecmp,strncasecmp(), strncmp(),它们都是假如前者比后者大,则前往大于0的整数;假如前者比后者小,则前往小于0的整数;假如二者相等,则前往0.它们对照的道理与其它言语的划定规矩都是一样的。
strcmp是用于辨别巨细写(即巨细写敏感)的字符串对照:
PHP:  [Copy to clipboard]
--------------------------------------------------------------------------------
echo strcmp("abcdd", "aBcde"); // 前往 1 (>0), 对照的是 "b"和"B"  

strcasecmp用于不辨别巨细写的字符串对照:
PHP:  [Copy to clipboard]
--------------------------------------------------------------------------------
echo strcasecmp("abcdd", "aBcde"); // 前往 -1 (<0), 对照的是"d"和"e"  

strncmp用于对照字符串的一局部,从字符串的开首入手下手对照,第三个参数,为要对照的长度:
PHP:  [Copy to clipboard]
--------------------------------------------------------------------------------
echo strncmp("abcdd", "aBcde", 3); // 前往 1 (>0), 对照了 abc 和 aBc  

strncasecmp用于不辨别巨细写的对照字符串的一局部,从字符串的开首入手下手对照,第三个参数,为要对照的长度:
PHP:  [Copy to clipboard]
--------------------------------------------------------------------------------
echo strncasecmp("abcdd", "aBcde", 3); // 前往 0, 对照了 abc 和 aBc,  
因为不辨别巨细写,所以二者是不异的。
还有一种情形是单单对照字符串巨细,达不到咱们预定的请求,好比照旧理 10.gif 会比 5.gif 大,但假如使用下面几个函数,就会前往 -1,即暗示 10.gif比5.gif,针对这类情形,PHP供应了两个天然对照的函数strnatcmp,strnatcasecmp:
PHP:  [Copy to clipboard]
--------------------------------------------------------------------------------
echo strnatcmp("10.gif", "5.gif"); // 前往 1 (>0)
echo strnatcasecmp("10.GIF", "5.gif"); // 前往 1 (>0)  

交换
交换的意义在于将一个字符串的一局部停止改动,使之成为别外一个新的字符串,以知足新的请求。PHP里凡是用str_replace("要交换的内容", "要代替原内容的字符串", "原字符串")停止交换。
PHP:  [Copy to clipboard]
--------------------------------------------------------------------------------
echo str_replace("iwind", "kiki", "i love iwind, iwind said"); // 将输入 "i love kiki, kiki said"  
行将 原字符串中的一切"iwind"都交换成了"kiki".
str_replace是巨细写敏感的,所以对你不克不及假想用 str_replace("IWIND", "kiki",...)交换原字符串中的"iwind".
str_replace还可以完成多对一,多对多的交换,但没法完成一对多的交换:
PHP:  [Copy to clipboard]
--------------------------------------------------------------------------------
echo str_replace(array("iwind", "kiki"), "people", "i love kiki, iwind said");  
将会输入
i love people, people said
第一个参数中的array("iwind", "kiki")都被交换成了"people"

PHP:  [Copy to clipboard]
--------------------------------------------------------------------------------
echo str_replace(array("iwind", "kiki"), array("gentle man", "ladies"), "i love kiki, iwind said");  
输入 i love ladies, gentle man said 。也就是说第一个数组中的元素被第二个数组中的绝对应的元素交换失落了,假如有一个数组比另外一个数组元素数要少,那末缺乏的城市看成空来处置。
与此有些相似的是strtr,用法请参阅手册,它们的对照请参阅 http://diary.4kiki.net/index.php?action=info&id=372 .
另外,PHP还供应了substr_replace,完成交换一局部的字符串。语法以下:
substr_replace (原字符串, 要替换的字符串, 入手下手交换的地位 [, 交换的长度])
个中,入手下手交换的地位从0入手下手盘算,应当小于原字符串的长度。要交换的长度是可选的。
PHP:  [Copy to clipboard]
--------------------------------------------------------------------------------
echo substr_replace("abcdefgh", "DEF", 3); // 将输入 "abcDEF"
echo substr_replace("abcdefgh", "DEF", 3, 2); // 将输入 "abcDEFfgh"  
第一个例子中,从第三个地位(即"d")入手下手交换,从而把 "defgh"都交换成了“DEF”
第二个例子中,也是从第三个地位(即"d")入手下手交换,但只能交换2个长度,即到e,所以就把"de"交换成了"DEF".
PHP还供应了preg_replace,preg_replace_callback,ereg_replace,eregi_replace等函数使用正则表达式来完成字符串交换,用法请参考手册。
查找与婚配
PHP里用于查找或婚配或定位的函数十分多,它们都有分歧的意义。这里只讲述用得对照多的strstr,stristr.后者与前者的功效,前往值都一样,只是不辨别巨细写。
strstr("母字符串", "子字符串")用来查找子字符串在母字符串中第一次呈现的地位,并前往母字符串中从子字符串入手下手到母字符串停止的局部。好比
echo strstr("abcdefg", "e"); //将输入 "efg"
假如找不到子字符串,则前往空。由于可以用来判别一个字符串中是不是含有别的一个字符串:
PHP:  [Copy to clipboard]
--------------------------------------------------------------------------------
$needle = "iwind";
$str = "i love iwind";
if (strstr($str, $needle))
{
echo "外面有 iwind";
}
else
{
echo "外面没有 iwind";
}
将会输入"外面有 iwind"  

HTML相干
1,htmlspecialchars($string)
这是它的最复杂用法,将字符串中的一些特别字符(望文生义)&,',"<,>转换成它们对应的HTML实体模式:
PHP:  [Copy to clipboard]
--------------------------------------------------------------------------------
$str = "i love <font color=\"red\">kiki</font>, iwind said.";
echo htmlspecialchars($str);  
将会输入
i love <font color="red">kiki</font>, iwind said.
2,htmlentities($string)
将一切能转换成实体模式的字符都转换成实体模式。
3,html_entity_decode($string);
PHP4.3.0今后到场的具有与htmlentities($string)相反的功效。
4,nl2br($string)
将字符串中一切换行符改变成<br /> + 换行符。如:
PHP:  [Copy to clipboard]
--------------------------------------------------------------------------------
$str = "i love kiki,\n iwind said.";
echo nl2br($str);  
将会输入
i love kiki,<br />
iwind said.

加密
加密字符串最经常使用的就是md5了,它将一个字符串转换成一个长32位的独一的字符串。
PHP:  [Copy to clipboard]
--------------------------------------------------------------------------------
echo md5("i love iwind"); // 将输入 "2df89f86e194e66dc54b30c7c464c21c"  

PHP5给md5加了第二个参数,从而使它可以输入16位的加密后的字符串。

到这里,这篇字符串操作入门教程就算停止了,但下面讲的这些还只是它的冰山一角,出格是PHP5以后增添了大批的新功效,所以需求咱们不休的去进修它才有能够很好的使用。

培训的第四阶段,就是应用PHP语言开发实际的程序。以结合实际的项目开发来进行学习,效果真的很好,在学习完之后就开始练习,能比较容易掌握所学的知识,这是学校的学习所没法比的。
作者: 透明    时间: 2015-2-4 10:04
有时候汉字的空格也能导致页面出错,所以在写代码的时候,要输入空格最好用引文模式。
作者: 老尸    时间: 2015-2-5 10:58
Apache不是非得用80或者8080端口的,我刚开始安得时候就是80端口老占用,就用了个 81端口,结果照常,就是输localhost的时候,应该输入为 localhost:81
作者: 小妖女    时间: 2015-2-5 14:41
个人呢觉得,配wamp 最容易漏的一步就是忘了把$PHP$目录下的libmysql.dll拷贝到windows系统目录的system32目录下,还有重启apache。
作者: 飘灵儿    时间: 2015-2-7 00:03
其实没啥难的,多练习,练习写程序,真正的实践比看100遍都有用。不过要熟悉引擎
作者: 若相依    时间: 2015-2-19 03:58
你很难利用原理去编写自己的代码。对于php来说,系统的学习我认为还是很重要的,当你有一定理解后,你可你针对某种效果研究,我想那时你不会只是复制代码的水平了。
作者: 金色的骷髅    时间: 2015-2-26 15:30
本文当是我的笔记啦,遇到的问题随时填充
作者: 蒙在股里    时间: 2015-3-7 10:27
曾经犯过一个很低级的错误,我在文件命名的时候用了一个横线\\\\\\\'-\\\\\\\' 号,结果找了好几个小时的错误,事实是命名的时候 是不能用横线 \\\\\\\'-\\\\\\\' 的,应该用的是下划线  \\\\\\\'_\\\\\\\' ;
作者: 第二个灵魂    时间: 2015-3-11 13:57
没接触过框架的人,也不用害怕,其实框架就是一种命名规范及插件,学会一个框架其余的框架都很好上手的。
作者: 冷月葬花魂    时间: 2015-3-18 16:15
作为一个合格的coder 编码的规范是必须,命名方面我推崇“驼峰法”,另外就是自己写的代码最好要带注释,不然时间长了,就算是自己的代码估计看起来都费事,更不用说别人拉。
作者: 兰色精灵    时间: 2015-3-19 02:20
当留言板完成的时候,下步可以把做1个单人的blog程序,做为目标,
作者: 深爱那片海    时间: 2015-3-21 09:49
最后祝愿,php会给你带来快乐的同时 你也会给他带来快乐。
作者: 只想知道    时间: 2015-4-3 21:01
做为1门年轻的语言,php一直很努力。
作者: 飘飘悠悠    时间: 2015-4-6 00:11
首先声明:我是一个菜鸟,是一个初学者。学习了一段php后总是感觉自己没有提高,无奈。经过反思我认为我学习过程中存在很多问题,我改变了学习方法后自我感觉有了明显的进步。
作者: 精灵巫婆    时间: 2015-4-6 18:12
学习php的目的往往是为了开发动态网站,phper就业的要求也涵盖了很多。我大致总结为:精通php和mysql
作者: 仓酷云    时间: 2015-4-13 00:22
我还是强烈建议自己搭建php环境。因为在搭建的过程中你会遇到一些问题,通过搜索或是看php手册解决问题后,你会更加深刻的理解它们的工作原理,了解到php配置文件中的一些选项设置。
作者: 因胸联盟    时间: 2015-4-20 23:15
其实没啥难的,多练习,练习写程序,真正的实践比看100遍都有用。不过要熟悉引擎
作者: 分手快乐    时间: 2015-4-22 10:21
Apache不是非得用80或者8080端口的,我刚开始安得时候就是80端口老占用,就用了个 81端口,结果照常,就是输localhost的时候,应该输入为 localhost:81
作者: 谁可相欹    时间: 2015-4-25 08:50
这些都是最基本最常用功能,我们这些菜鸟在系统学习后,可以先对这些功能深入研究。
作者: 柔情似水    时间: 2015-5-1 18:33
多看优秀程序员编写的代码,仔细理解他们解决问题的方法,对自身有很大的帮助。
作者: 海妖    时间: 2015-5-3 02:11
这些中手常用的知识,当你把我说的这些关键字都可以熟练运用的时候,你可以选择自己




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2