PHP字符串处理的10个简单方法


Posted in PHP onJune 30, 2010

1.确定一个字符串的长度

这是文章中最明显的一个例子,其中的问题是我们如何来确定一个字符串的长度,这里我们不能不提的就是strlen()函数:

$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()函数。使用fopen()和fgetcsv()函数,我们能够很容易的解析这个文件,同时检索出每个联系人的名字:

$fh = fopen("contacts.csv", "r"); 
while($line = fgetcsv($fh, 1000, ",")) 
{ echo "Contact: {$line[1]}"; }

5.转换成一个字符串数组

某些时候,你可能需要创建CSV文件,同时又在这些文件中进行读取,这就意味着你需要将那些同逗号分隔的字符串转换成数据。如果这些数据最初是从数据库检索出的,那么它很可能会只给您提供一个数组。这时,您可以使用implode()函数,将这些字符串转换成一个数组:

$csv = implode(",", $record);

6.将网址转换成超链接

目前许多WYSIWYG编辑器提供的工具栏,都允许用户标记文本,包括超链接。但是,当内容呈现到页面上时,你可以很容易的自动执行此过程,同时保证您不出现额外的错误。要转换成超链接的URL,你可以使用preg_replace()函数,它可以按照正则表达式来搜索一个字符串,并定义了URL的结构:

$url = "W.J. Gilmore, LLC (http://www.wjgilmore.com)"; 
$url = preg_replace("/http://([A-z0-9./-]+)/", "$0", $url); 
// $url = "W.J. Gilmore, LLC (http://www.wjgilmore.com)"

7.从一个字符串中去除HTML标签

作为Web开发人员,其中的一个主要工作就是要确保用户输入中不含有危险字符,如果有,这会导致SQL注入或脚本攻击。PHP语言中包含了很多安全方面的功能,这些功能能够帮助你过滤数据,包括延长过滤器。例如,你可以允许用户中带有一些基本的HTML语句,包括一些注释。实现这个功能,你可以使用带有检查功能函数:strip_tags()。它在默认的情况下是从字符串中删除所有的HTML标签,但同时也允许覆盖默认或者你指定的标签。例如,在下面的例子中,你可以除去所有的标签:

$text = strip_tags($input, " ");

8.比较两个字符串

比较两个字符串,以确保它们是相同的。例如,判断用户第一次与第二次输入的密码是否相同,你可以使用substr_compare()函数来很容易的现实:

$pswd = "secret"; 
$pswd2 = "secret"; 
if (! strcmp($pswd, $pswd2)) 
{ echo "The passwords are not identical!"; }

如果你想判断两个字符串不区分大小写,可以使用strcasecmp()函数。

9.转换换行符

在本文中我介绍了如何轻松转换成超超链接的URL,现在介绍nl2br()函数,这个函数能够帮助你将任何换行符转换成HTML标签。

$comment = nl2br($comment);

10.应用自动换行

应用自动换行,你可以使用PHP中的这个函数:wordwrap():

$speech = "Four score and seven years ago our fathers brought forth, upon this continent, a new nation, conceived in Liberty, and dedicated to the proposition that all men are created equal."; 
echo wordwrap($speech, 30);

执行上面的代码,结果是:

Four score and seven years ago our fathers brought forth, upon this continent, a new nation, conceived in Liberty, and dedicated to the proposition that all men are created equal.

原文地址:http://phpbuilder.com/columns/Jason_Gilmore060210.php3
原文名:10 Easy Solutions for PHP String Manipulation
作者:W. Jason Gilmore

PHP 相关文章推荐
PHP如何得到当前页和上一页的地址?
Nov 27 PHP
中篇:安装及配置PHP
Dec 13 PHP
ubuntu 编译安装php 5.3.3+memcache的方法
Aug 05 PHP
第4章 数据处理-php正则表达式-郑阿奇(续)
Jul 04 PHP
基于php设计模式中工厂模式详细介绍
May 15 PHP
Linux环境下搭建php开发环境的操作步骤
Jun 17 PHP
PHP中判断变量为空的几种方法分享
Aug 26 PHP
php实现过滤字符串中的中文和数字实例
Jul 29 PHP
PHP递归创建多级目录
Nov 05 PHP
PHP实现普通hash分布式算法简单示例
Aug 06 PHP
Laravel框架运行出错提示RuntimeException No application encryption key has been specified.解决方法
Apr 02 PHP
php优化查询foreach代码实例讲解
Mar 24 PHP
php flv视频时间获取函数
Jun 29 #PHP
PHP常用代码大全(新手入门必备)
Jun 29 #PHP
PHP print类函数使用总结
Jun 25 #PHP
php url地址栏传中文乱码解决方法集合
Jun 25 #PHP
PHP+ACCESS 文章管理程序代码
Jun 21 #PHP
php $_SERVER["REQUEST_URI"]获取值的通用解决方法
Jun 21 #PHP
php自动加载的两种实现方法
Jun 21 #PHP
You might like
php页面消耗内存过大的处理办法
2013/03/18 PHP
PHP中多维数组的foreach遍历示例
2014/06/13 PHP
Google韩国首页图标动画效果
2007/08/26 Javascript
js预载入和JavaScript Image()对象使用介绍
2011/08/28 Javascript
通过JS自动隐藏手机浏览器的地址栏实现原理与代码
2013/01/02 Javascript
一个支持任意尺寸的图片上下左右滑动效果
2014/08/24 Javascript
jquery幻灯片插件bxslider样式改进实例
2014/10/15 Javascript
javascript设计模式之中介者模式Mediator
2014/12/30 Javascript
JS通过ajax动态读取xml文件内容的方法
2015/03/24 Javascript
JavaScript获取当前网页标题(title)的方法
2015/04/03 Javascript
JavaScript去除数组里重复值的方法
2015/07/13 Javascript
JS+HTML5手机开发之滚动和惯性缓动实现方法分析
2016/06/12 Javascript
浅谈JS中的!=、== 、!==、===的用法和区别
2016/09/24 Javascript
Vue.js 2.0和Cordova开发webApp环境搭建方法
2018/02/26 Javascript
Python实现简单截取中文字符串的方法
2015/06/15 Python
简单介绍使用Python解析并修改XML文档的方法
2015/10/15 Python
简介Python设计模式中的代理模式与模板方法模式编程
2016/02/02 Python
selenium+python自动化测试之环境搭建
2019/01/23 Python
使用Python-OpenCV向图片添加噪声的实现(高斯噪声、椒盐噪声)
2019/05/28 Python
基于python的Paxos算法实现
2019/07/03 Python
Win10环境python3.7安装dlib模块趟过的坑
2019/08/01 Python
命令行运行Python脚本时传入参数的三种方式详解
2019/10/11 Python
浅谈spring boot 集成 log4j 解决与logback冲突的问题
2020/02/20 Python
Django实现celery定时任务过程解析
2020/04/21 Python
python实现图片转换成素描和漫画格式
2020/08/19 Python
美国最大的电子宠物训练产品制造商:PetSafe
2018/10/12 全球购物
AP澳洲中文网:澳洲正品直邮,包税收件无忧
2019/07/12 全球购物
XML文档定义有几种形式?它们之间有何本质区别?解析XML文档有哪几种方式?
2016/01/12 面试题
2014年教师节讲话稿5篇
2014/09/10 职场文书
高中生第一学年自我鉴定
2014/09/12 职场文书
党的群众路线教育实践活动心得体会(乡镇)
2014/11/03 职场文书
2014年少先队工作总结
2014/12/03 职场文书
小学母亲节活动总结
2015/02/10 职场文书
关于上班时间调整的通知
2015/04/23 职场文书
工作时间调整通知
2015/04/24 职场文书
详解MySQL 联合查询优化机制
2021/05/10 MySQL