10种处理PHP字符串的措施
PHP有一个海量字符串操作库,提供了大约100个分割、连接、解析和搜索文本的功能。在这一点上,PHP的性能是如此地强大以至于在处理字符串相关问题时,判断哪一个是最好的方法会比较困难。本文中我讲了10个通常会用到的字符串处理的解决方案。
1. 判定字符串长度
到目前为止,这是本文中展示的最简单的例子,以至于我差点忽略掉它。
$text = “sunny day”;
$count = strlen($text);
// $count = 9
2. 截短文本做成摘要形式
以新闻为主的网站通常会把每篇文章的前200个左右的字符提取出来并在被截短的字符串后边加上省略符号生成一个新闻摘要。可以用substr_replace()函数实现这个功能。由于空间的原因,我将用一个截取40个字母的例子来论证这个效果。
$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文档。
10种处理PHP字符串的措施的更多相关文章
- Microsoft.VisualBasic.dll的妙用and 改善C#公共程序类库质量的10种方法
Microsoft.VisualBasic.dll的妙用(开发中肯定会用到哦) 前言 做过VB开发的都知道,有一些VB里面的好的函数在.NET里面都没有,而Microsoft.VisualBasic. ...
- Python第三天 序列 5种数据类型 数值 字符串 列表 元组 字典 各种数据类型的的xx重写xx表达式
Python第三天 序列 5种数据类型 数值 字符串 列表 元组 字典 各种数据类型的的xx重写xx表达式 目录 Pycharm使用技巧(转载) Python第一天 安装 shell ...
- 利用Linux系统生成随机密码的10种方法【转】
Linux操作系统的一大优点是对于同样一件事情,你可以使用高达数百种方法来实现它.例如,你可以通过数十种方法来生成随机密码.本文将介绍生成随机密码的十种方法. 1. 使用SHA算法来加密日期,并输出结 ...
- Linux下命令行cURL的10种常见用法示例
curl的命令行工具功能非常强大,这些数据交互的功能基本上都是通过URL方式进行的,下面这篇文章主要给大家分享了在Linux中命令行cURL的10种常见用法示例,通过示例代码介绍的非常详细,需要的朋友 ...
- 【转】10种简单的Java性能优化
10种简单的Java性能优化 2015/06/23 | 分类: 基础技术 | 14 条评论 | 标签: 性能优化 分享到: 本文由 ImportNew - 一直在路上 翻译自 jaxenter.欢迎加 ...
- 一篇文章带你编写10种语言HelloWorld
0,编程语言排行榜 计算机编程语言众多,世界上大概有600 多种编程语言,但是流行的也就几十种.我们来看下编程语言排行榜,下面介绍两种语言排行榜. Ⅰ TIOBE 指数 该指数每月更新一次,它监控了近 ...
- 016 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 10 布尔类型和字符串的字面值
016 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 10 布尔类型和字符串的字面值 本文知识点:字面值 关于字面值的概念,需要注意:很多地方,我们可能就把字面值 ...
- 支持10种格式的 HTML 表格导出 jQuery 插件
HTML 表格导出 jQuery 插件可以帮助用户导出 HTML 表格到 JSON.XML.PNG.CSV.TXT.SQL.MS-Word.MS-Excel.MS-PowerPoint 和 PDF 格 ...
- 让C程序更高效的10种方法(转)
原文:http://blog.jobbole.com/1198/ 代码之美,不仅在于为一个给定问题找到解决方案,而且还在代码的简单性.有效性.紧凑性和效率(内存).代码设计比实际执行更难 .因此,每一 ...
随机推荐
- Android media媒体库分析之:MediaProvider
在做Android媒体应用程序时(Audio.Image.Video)需要对Android的媒体提供者(MediaProvider)做详细的分析,下面记录一下我的收获: 一.获取MediaProvid ...
- 使用float和display:block将内联元素转换成块元素的不同点
使用float和display:block将内联元素转换成块元素的不同点 使用float和display:block将内联元素转换成块元素的不同点:内联元素可以转换成块级元素,常用的方法比如可以为内联 ...
- linux logrotate配置
对于Linux 的系统安全来说,日志文件是极其重要的工具.系统管理员可以使用logrotate 程序用来管理系统中的最新的事件,对于Linux 的系统安全来说,日志文件是极其重要的工具.系统管理员可以 ...
- 关于日期条件查询的sql 代码
daysqhql = "select sum(c.casenum) from domain.Case c where" + " convert(varchar(10),c ...
- linux shell——md5sum,sha1sum,sort,uniq (转)
1.文件校验 1. md5sum eg: md5sum filename 注:生成一个128位的二进制位,即32位的十六进制字符串 1.验证文件的正确性: md5sum file1 file2 &g ...
- POJ 3258 River Hopscotch(二分查找答案)
一个不错的二分,注释在代码里 #include <stdio.h> #include <cstring> #include <algorithm> #include ...
- Mac os 10.11 更新ruby
1.装cocoapods,ruby版本忒低->开始更新ruby->开始更新gem,这是一条不归路啊同志们,各种permission denied,各种路径不存在,各种路径没有读写权限,各种 ...
- 004-Python字符串
Python 字符串(str) 字符串是 Python 中最常用的数据类型.我们可以使用引号('或")来创建字符串.创建字符串很简单,只要为变量分配一个值即可. var1 = "H ...
- 数据结构录 之 BST的高级应用。
BST就是二叉检索树,或者是二叉排序树,或者叫二叉搜索树等等. BST的平衡问题可以去学习AVL树或者Treap或者Splay这些平衡树. BST的一些高级应用: 1,求BST中比k小的数的个数: 只 ...
- Java中Calendar的用法
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Times } span.s1 { font: 13.0px Courier; backgro ...