首頁 php教程 php手册 第八章 字符串处理

第八章 字符串处理

Jun 13, 2016 am 09:39 AM
aspnet 軟體程式設計

注:文章出自李炎恢PHP视频教程,本文仅限交流使用,不得用于商业用途,否则后果自负。

学习要点:
1.字符串格式化
2.操作子字符串
3.字符串比较
4.查找替换字符串
5.处理中文字符

 

在每天的编程工作中,处理、调整以至最后控制字符串是很重要的一部分,一般也认为
这是所有编程语言的基础。不同与其他语言,PHP 没有那么麻烦地使用数据类型来处理字
符串。这样一来,PHP 中的字符串处理就再容易不过了。

 

一.字符串格式化

整理字符串的第一步是清理字符串中多余的空格。虽然这一部操作不是必需的,但如果
要将字符串存入一个文件或数据库中,或者将它和别的字符串进行比较,这就是非常有用的。
chop()函数移除字符串后面多余的空白,包括新行。
ltrim()函数移除字符串起始处多余空白。
rtrim()函数移除字符串后面多余的空白,包括新行,此函数是chop()的别名。
trim()函数移除字符串两边多余的空白。

<?<span php
</span><span echo</span> <span trim</span>('        PHP       '<span );
</span>?>
登入後複製

PHP 具有一系列可供使用的函数来重新格式化字符串,这些函数的工作方式是各不相
同的。
nl2br()函数将字符串作为输入参数,用XHTML 中的
标记代替字符串中的换行符。

<?<span php
</span><span echo</span> <span nl2br</span>("This is a Teacher!\nThis is a Student!"<span );
</span>?>
登入後複製

将特殊字符转换为HTML 等价形式,可以使用htmlentities()和htmlspecialchars 函数。
如果想要去掉字符串中的HTML 去掉,可以使用strip_tags()函数

<?<span php
</span><span echo</span> <span htmlentities</span>('<strong>我是吴祁!</strong>'); <span //</span><span 转换所有字符</span>
<span echo</span> <span htmlspecialchars</span>('<strong>我是吴祁!</strong>') <span //</span><span 转换特殊字符</span>
<span echo</span> <span strip_tags</span>('<strong>我是吴祁!</strong>') <span //</span><span 去掉了<strong></span>
?>
登入後複製

对于字符串来说,某些字符肯定是有效的,但是当将数据插入到数据库中的时候可能会
引起一些问题,因为数据库会将这些字符解释成控制符。这些有问题的字符就是引号(单引
号和双引)、反斜杠(\)和NULL 字符。
PHP 提供了两个专门用于转义字符串的函数。在将任何字符串写到数据库之前,应该
使用addslashes()将它们重新格式化,
在调用了addslashes()后,所有的引号都加了斜杠,而stripslashes()函数去掉了这些斜杠。

<?<span php
</span><span echo</span> <span addslashes</span>('This is \a" Teacher! '<span );
</span>?>
登入後複製

可以重新格式化字符串中的字母大小写。
strtoupper()函数将字符串转换为大写
strtolower()函数将字符串转换成小写
ucfirst()函数将第一个字母转换为大写
ucwords()函数将每个单词第一个字母转换为大写

<?<span php
</span><span echo</span> <span strtoupper</span>('yc60.com@gmail.com'<span );
</span>?>
登入後複製

填充字符串函数:str_pad()将字符串用指定个数的字符填充字符串。

<?<span php
</span><span echo</span> <span str_pad</span>('Salad',10).'is good.'<span ;
</span>?>
登入後複製

二.操作子字符串

通常,我们想查看字符串的各个部分。例如,查看句子中的单词,或者将一个域名或电
子邮件地址分割成一个个的组件部分。PHP 提供了几个字符串函数来实现此功能。
使用函数explode()、implode()和join()
为了实现这个功能,我们将使用的第一个函数是explode()。
使用implode()或join()函数来实现与函数explode()相反的效果,这两个函数的效果是一
致的。

<?<span php
</span><span $email</span> = 'yc60.com@gmail.com'<span ;
</span><span $email_array</span> = <span explode</span>('@',<span $email</span><span );
</span>?>
登入後複製

使用strtok()函数
strtok()函数一次只从字符串取出一些片段(称为令牌)。对于一次从字符串中取出一个
单词的处理来说,strtok()函数比explode()函数的效果更好。

<?<span php
</span><span $str</span> = "I,will.be#back"<span ;
</span><span $tok</span> = <span strtok</span>(<span $str</span>,",.#"<span );
</span><span while</span>(<span $tok</span><span ) {
</span><span   echo</span> "<span $tok</span><br \>"<span ;
  </span><span $tok</span> = <span strtok</span>(",.#"<span );
}
</span>?>
登入後複製

使用substr()函数
函数substr()允许我们访问一个字符串给定起点和终点的子字符串。这个函数并不适用
于我们的例子中,但是,当需要得到某个固定格式字符串中的一部分时,它会非常有用。

<?<span php
</span><span echo</span> <span substr</span>("abcdef", 1, 3<span );
</span>?>
登入後複製

分解字符串:str_split()返回一个数组,其中各数组元素分别是字符串参数中的一个字符
串。

<?<span php
</span><span print_r</span>(<span str_split</span>('This is a Teacher!'<span ));
</span>?>
登入後複製

逆置字符串:strrev()可以将一个字符串逆反过来。

<?<span php
</span><span echo</span> <span strrev</span>('This is a Teacher!'<span );
</span>?>
登入後複製

三.字符串比较

到目前为止,我们已经用过"= ="号来比较两个字符串是否相等。使用PHP 可以进行一
些更复杂的比较。这些比较分为两类:部分匹配和其他情况。
字符串的排序:strcmp()、strcasecmp()和strnatcmp()
该函数需要两个进行比较的参数字符串。如果这两个字符串相等,该函数返回0,如果
按字典顺序str1 和str2 后面(大于str2)就返回一个正数,如果str1 小于str2 就返回一个负
数。这个函数是区分大小写的。
函数strcasecmp()除了不区分大小写之外,其他和strcmp()一样。
函数strnatcmp()及与之对应的不区分大小写的strnatcasecmp()函数是在PHP4 中新增的。
这两个函数按“自然排序”比较字符串,所谓自然排序是按人们习惯的顺序进行排序。

<?<span php
</span><span echo</span> <span strcmp</span>('a','b'<span );
</span>?>
登入後複製

使用strspn()函数返回一个字符串中包含有另一个字符串中字符的第一部分的长度。也
就是求两个字符串之间相同的部分。

<?<span php
</span><span echo</span> <span strspn</span>('gmail','yc60.com@gmail.com'<span );
</span>?>
登入後複製

使用strlen()函数测试字符串的长度
可以使用函数strlen()来检查字符串的长度。如果传给它一个字符串,这个函数将返回
字符串的长度。例如, strlen("hello") 将返回5.

<?<span php
</span><span echo</span> <span strlen</span>('This is a Teacher!'<span );
</span>?>
登入後複製

确定字符串出现的频率:substr_count()返回一个字符串在另一个字符串中出现的次数。

<?<span php
</span><span echo</span> <span substr_count</span>('yc60.com@gmail.com','c'<span );
</span>?>
登入後複製

四.查找替换字符串

通常,我们需要检查一个更长的字符串中是否含有一个特定的子字符串。这种部分匹配
通常比测试字符串的完全等价更有用处。
在字符串中查找字符串:strstr()、strchr()、strrchr()和stristr()
函数strstr()是最常见的,它可以用于在一个较长的字符串专供查找匹配的字符串或字
符。请注意,函数strchr()和strstr()完全一样。

<?<span php
</span><span echo</span> <span strstr</span>('yc60.com@gmail.com','@'<span );
</span>?>
登入後複製

函数strstr()有两个变体。第一个变体是stristr(),它几乎和strstr()一样,其区别在于不区
分字符大小。对于我们的只能表单应用程序来说,这个函数非常有用,因为用户可以输入
"delivery"、"Delivery"和"DELIVERY"。
第二个变体是strrchr(),它也几乎和strstr()一样,只不过是strstr()的别名。
查找字符串的位置:strpos()、strrpos()。
函数strpos()和strrpos()的操作和strstr()类似,但它不是返回一个子字符串,而返回子字
符串needle 在字符串haystack 中的位置。更有趣的是,现在的PHP 手册建议使用strpos()
函数代替strstr()函数来查看一个子字符串在一个字符串中出现的位置,因为前者的运行速度

更快。

<?<span php
</span><span echo</span> <span strrpos</span>('yc60.com@gmail.com','c'<span );
</span>?>
登入後複製

替换字符串:str_replace()、str_ireplace()、substr_replace()

<?<span php
</span><span echo</span> <span str_replace</span>('@','#','yc60.com@gmail.com'<span );
</span><span echo</span> <span substr_replace</span>('yc60.com@gmail.com','###',0,5<span );
</span>?>
登入後複製

五.处理中文字符

对于以上的字符串函数,有些可以用于中文,但有些却不适用中文。所以,PHP 提供
了专门的函数来解决这样的问题。
中文字符可以是gbk,utf8,gb2312
mb_strlen() 对应的函数为strlen() 求字符串的长度
mb_strstr() 对应的函数为strstr() 求某字符串到结尾的字符
mb_strpos() 对应的函数为strpos() 求出字符最先出现处
mb_substr() 对应的函数为substr() 取出指定的字符串
mb_substr_count() 对应函数为substr_str() 返回字符串出现的次数

最后扫一遍帮助手册

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Vue.js與ASP.NET的結合,實現Web應用的效能最佳化與擴充的技巧與建議 Vue.js與ASP.NET的結合,實現Web應用的效能最佳化與擴充的技巧與建議 Jul 29, 2023 pm 05:19 PM

Vue.js與ASP.NET的結合,實現Web應用的效能最佳化和擴展的技巧和建議隨著Web應用的快速發展,效能最佳化成為開發者不可或缺的重要任務。 Vue.js作為一個流行的前端框架,與ASP.NET的結合可以幫助我們實現更好的效能最佳化和擴充。本文將會介紹一些技巧和建議,並提供一些程式碼範例。一、減少HTTP請求HTTP請求的數量直接影響Web應用程式的載入速度。透過

生成式AI將在十個方面改變軟體開發 生成式AI將在十個方面改變軟體開發 Mar 11, 2024 pm 12:10 PM

譯者|陳峻審校|重樓上世紀90年代,當人們提起軟體程式設計時,通常意味著選擇一個編輯器,將程式碼檢入CVS或SVN程式碼庫,然後將程式碼編譯成可執行檔。與之對應的Eclipse和VisualStudio等整合開發環境(IDE)可以將程式設計、開發、文件、建置、測試、部署等步驟納入到一個完整的軟體開發生命週期(SDLC)中,從而提高了開發人員的工作效率。近年來,流行的雲端運算和DevSecOps自動化工具提升了開發者的綜合能力,使得更多的企業能夠更輕鬆地開發、部署和維護軟體應用。如今,生成式AI作為下一代開

ASP.NET程式中的MySQL連線池使用及最佳化技巧 ASP.NET程式中的MySQL連線池使用及最佳化技巧 Jun 30, 2023 pm 11:54 PM

如何在ASP.NET程式中正確使用和最佳化MySQL連線池?引言:MySQL是一種廣泛使用的資料庫管理系統,它具有高效能、可靠性和易用性的特性。在ASP.NET開發中,使用MySQL資料庫進行資料儲存是常見的需求。為了提高資料庫連接的效率和效能,我們需要正確地使用和最佳化MySQL連接池。本文將介紹在ASP.NET程式中如何正確使用和最佳化MySQL連接池的方法。

如何在ASP.NET程式中重連MySQL連線? 如何在ASP.NET程式中重連MySQL連線? Jun 29, 2023 pm 02:21 PM

如何在ASP.NET程式中重連MySQL連線?在ASP.NET開發中,使用MySQL資料庫是非常常見的。然而,由於網路或資料庫伺服器的原因,有時會導致資料庫連線中斷或逾時。在這種情況下,為了確保程式的穩定性和可靠性,我們需要在連線中斷後重新建立連線。本文將介紹如何在ASP.NET程式中實作重連MySQL連線的方法。引用必要的命名空間首先,在程式碼檔案的頭部引用

Vue.js與ASP.NET的結合,實現企業級應用的開發與部署 Vue.js與ASP.NET的結合,實現企業級應用的開發與部署 Jul 29, 2023 pm 02:37 PM

Vue.js與ASP.NET的結合,實現企業級應用的開發和部署在當今快速發展的互聯網技術領域,企業級應用的開發和部署變得越來越重要。 Vue.js和ASP.NET是兩個在前端和後端開發中廣泛使用的技術,將它們結合起來可以為企業級應用的開發和部署帶來許多優勢。本文將透過程式碼範例介紹如何使用Vue.js和ASP.NET進行企業級應用的開發和部署。首先,我們需要安裝

如何在ASP.NET程式中正確設定和使用MySQL連線池? 如何在ASP.NET程式中正確設定和使用MySQL連線池? Jun 29, 2023 pm 12:56 PM

如何在ASP.NET程式中正確設定和使用MySQL連線池?隨著互聯網的發展和資料量的增加,對資料庫的存取和連接需求也不斷增加。為了提高資料庫的效能和穩定性,連接池成為了一個必備的技術。本文主要介紹如何在ASP.NET程式中正確配置和使用MySQL連接池,以提高資料庫的效率和回應速度。一、連接池的概念和作用連接池是一種重複使用資料庫連接的技術,在程式初始

ASP.NET中使用並最佳化MySQL連線池的事務效能 ASP.NET中使用並最佳化MySQL連線池的事務效能 Jun 30, 2023 pm 12:12 PM

如何在ASP.NET程式中正確使用並最佳化MySQL連線池的事務效能?在ASP.NET程式中,資料庫事務是非常重要的一環。事務可以確保資料庫的一致性和完整性,同時也可以提供更好的效能。而在使用MySQL資料庫時,利用連線池來管理連線資源和最佳化效能是不可或缺的。首先,讓我們簡單了解一下MySQL連接池的概念。連接池是一組連接的緩衝池,透過預先初始化一定數量的數

aspnet有哪些內建對象 aspnet有哪些內建對象 Nov 21, 2023 pm 02:59 PM

ASP.NET中的內建物件有「Request」、「Response」、「Session」、「Server」、「Application」、 「HttpContext」、「Cache」、「Trace」、「Cookie」和「Server.MapPath」:1、Request,表示客戶端發出的HTTP請求;2、Response:表示Web伺服器回傳給客戶端的HTTP回應等等。

See all articles