PHP有一个海量字符串操做库,提供了大约100个分割、链接、解析和搜索文本的功能。在这一点上,PHP的性能是如此地强大以致于在处理字符串相关问题时,判断哪个是最好的方法会比较困难。本文中我讲了10个一般会用到的字符串处理的解决方案。php
1. 断定字符串长度web
到目前为止,这是本文中展现的最简单的例子,以致于我差点忽略掉它。正则表达式
$text = “sunny day”;数据库
$count = strlen($text);数组
// $count = 9安全
2. 截短文本作成摘要形式编辑器
以新闻为主的网站一般会把每篇文章的前200个左右的字符提取出来并在被截短的字符串后边加上省略符号生成一个新闻摘要。能够用substr_replace()函数实现这个功能。因为空间的缘由,我将用一个截取40个字母的例子来论证这个效果。ide
$article = "BREAKING NEWS: In ultimate irony, man bites dog.";
函数
$summary = substr_replace($article, "...", 40);
工具
// $summary = "BREAKING NEWS: In ultimate irony, man bi..."
3. 计算字符串中的单词数量
常常能够看到博客或者以新闻为主的站点统计一篇文章的字数或者要求发布文章的人在一个预先定义的字数范围内发表文章。你能够用str_word_count()函数实现统计单词数量的功能。
$article = "BREAKING NEWS: In ultimate irony, man bites dog.";
$wordCount = str_word_count($article);
// $wordCount = 8
若是你想统计某个字符串中的字符数量,能够用count_chars()函数;
4. 解析CSV文件
文件中的数据一般会用CSV格式存放。CSV用逗号或者相似的预约义的定界符来分割每一列。一般是创建一个PHP脚原本导入数据,并解析或者处理成你所须要的。多年以来,我见过不少不一样的解析CSV文件的方法,最经常使用的是用fgets()函数和explode()函数联合起来读取并解析文件。可是,最容易的办法是调用一个并没用被划分到PHP字符串处理库的一个函数:fgetcsv()。不管是逗号分隔符仍是别的分隔符,均可以用这个函数来控制输出。
例以下面的文件:
1,John,Smith,Plumber
2,Mark,Seagal,Instructor
3,Peter,Haines,Writer
用fopen()和fgetcsv(),能够比较容易地解析文件并检索到每一组联系人的第一个名字。
$fh = fopen(“contacts.csv”, “r”);
while($line = fgetcsv($fh, 1000, “,”)) { echo “Contact: {$line[1]} “; }
5. 将数组转换成字符串
某些特定的场合,你可能须要创建一个CSV文件并读取它的内容。意味着你须要将数据转换成用逗号分割的字符串格式。若是这个数据是从数据库里检索到的,可能会以数组的方式呈如今你面前。你能够利用implode()函数将数组转换成用逗号分割的字符串格式。
$csv = implode(“,”, $record);
6. 将URL转换成超连接
许多所见即所得编辑器(WYSIWYG editors)提供了一个工具栏,容许用户的文本中包含超连接。当内容已经提交到页面上时能够自动地实现这个过程,减小了发布者的不变和出现错误的机会。preg_replace()函数能够实现将URL转换成超连接的功能,它可以根据一个已定义好URL结构的正则表达式来搜索字符串并进行替换。
$url = "W.J. Gilmore, LLC (http://www.wjgilmore.com)";
$url = preg_replace("/http://([A-z0-9./-]+)/", "$0", $url);
// $url = "W.J. Gilmore, LLC
7. 从字符串中移除HTML标签
做为一个web开发人员,确保用户的输入不包含潜在危险的数据,这些数据能够形成SQL注入或跨站脚本攻击是一项重要的任务。PHP语言包含了大量的与安全相关的性能,能够帮助你过滤数据。你只是但愿对用户的输入添加一点额外的控制而不是采起一个“焦土策略”的办法。(scorched earth:焦土策略。例如:军队撤退时销毁一切敌军可利用之物)例如:你容许用户在他们的评论里输入一些简单的HTML(好比一个标签),能够用strip_tags()函数检查进行,这个函数不但能够默认地从一个字符串中移除全部的HTML标签,并且容许你重写默认值并指定某个标签是容许使用的。举个例子,能够用下面的语句去掉全部除了“and”之外的标签:
$text = strip_tags($input, " ");
8. 比较两个字符串
比较两个字符串确保它们是同样的。例如:在用户输入密码及确认密码的时候,咱们能够用substr_compare()函数来比较。
$pswd = "secret";
$pswd2 = "secret";
if (! strcmp($pswd, $pswd2)) { echo "The passwords are not identical!"; }
若是在比较两个字符串的时候不区分大小写,能够用strcasecmp()函数。
9. 将换行符转换成换行标签
用到的函数是:nl2br();
例子:
<?php
echo nl2br("foo isn'tn bar");
?>
输出结果是:foo isn't<br /> bar
10. 自适应换行
用到的函数是:wordwrap();
例子:
<?php
$text = "The quick brown fox jumped over the lazy dog.";
$newtext = wordwrap($text, 20, "<br />n");
echo $newtext;
?>
输出结果是:
The quick brown fox<br />
jumped over the lazy<br />
dog.
小结:
本文所讲的内容只是PHP处理字符串中的很小的一部分。更多处理方法请查看PHP文档。