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/ 代码之美,不仅在于为一个给定问题找到解决方案,而且还在代码的简单性.有效性.紧凑性和效率(内存).代码设计比实际执行更难 .因此,每一 ...
随机推荐
- redmine配置邮件
作为一个项目管理平台,必须能够通知项目成员有关项目和任务的各种状态变化.这也是一种典型的观察者模式.开发人员可以跟踪某个任务,当任务状态.备注.文档.优先级等变化时开发人员就可以得到通知. 对于新配置 ...
- 选择LDO的方法(转)
http://www.micro-bridge.com/news/sort.asp?dy1=技术资料&dy2=产品相关资料&page=2 作者:LANDA PHAM 来源:德州仪器 ...
- 数据的软删除-管理员的CRUD
数据的“软删除”---把数据真正删除在某些时候会有问题.IsDeleted字段,false表示不删除,而是让用户可以看到,true表示是软删除,用户看不到. 一个表引用另外一张表的时候一定要引用主键. ...
- gen_grant_sel.sql
set echo off feedback off verify off pagesize 0 linesize 120 define v_grantee=&1 define v_grant_ ...
- Winform带dataGridview的Combox控件
调用控件: public partial class Form1 : Form { public Form1() { InitializeComponent(); //---------------- ...
- Delphi XE7,Rad Studio XE7 官方下载(附Delphi XE7破解),更新Update1(转)
源:http://blog.csdn.net/maxwoods/article/details/39024525
- tset
test fsdfs jsjf sdfsdfsdfsdf sfs fsfsfs test112 sdfs sdfsdf sdfs sf af s sdf sadfasdfsa asfasf sdfsa ...
- HAProxy 7层 负载均衡
系统 CentOS 5.8 x64 wget http://haproxy.1wt.eu/download/1.3/src/haproxy-1.3.26.tar.gz cd haproxy-1.3.2 ...
- MongoDB 基本命令
./mongo 进入命令行. 1.show dbs 显示当前数据库服务器上的数据库 2.use pagedb 切换到指定数据库pagedb的上下文,可以在此上下文中管理pagedb数据库以及其中的集 ...
- python模块--ip地址转换为整数
python整数与IP地址转换 [转] 我们有时会将一个整数与IP地址进行互换,用python代码实现很简单 将一个整数如2000000,变为一个IP地址的方式 >>> import ...