搜尋
首頁後端開發php教程第八章 字符串处理_PHP教程

注:文章出自李炎恢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() 返回字符串出现的次数

最后扫一遍帮助手册

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/748764.htmlTechArticle注:文章出自李炎恢PHP视频教程,本文仅限交流使用,不得用于商业用途,否则后果自负。 学习要点: 1.字符串格式化 2.操作子字符串 3...
陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
簡單地說明PHP會話的概念。簡單地說明PHP會話的概念。Apr 26, 2025 am 12:09 AM

phpsessionstrackuserdataacrossmultiplepagerequestsusingauniqueIdStoredInAcookie.here'showtomanageThemeffectionaly:1)startAsessionWithSessionWwithSession_start()和stordoredAtain $ _session.2)

您如何循環中存儲在PHP會話中的所有值?您如何循環中存儲在PHP會話中的所有值?Apr 26, 2025 am 12:06 AM

在PHP中,遍歷會話數據可以通過以下步驟實現:1.使用session_start()啟動會話。 2.通過foreach循環遍歷$_SESSION數組中的所有鍵值對。 3.處理複雜數據結構時,使用is_array()或is_object()函數,並用print_r()輸出詳細信息。 4.優化遍歷時,可採用分頁處理,避免一次性處理大量數據。這將幫助你在實際項目中更有效地管理和使用PHP會話數據。

說明如何使用會話進行用戶身份驗證。說明如何使用會話進行用戶身份驗證。Apr 26, 2025 am 12:04 AM

會話通過服務器端的狀態管理機制實現用戶認證。 1)會話創建並生成唯一ID,2)ID通過cookies傳遞,3)服務器存儲並通過ID訪問會話數據,4)實現用戶認證和狀態管理,提升應用安全性和用戶體驗。

舉一個如何在PHP會話中存儲用戶名的示例。舉一個如何在PHP會話中存儲用戶名的示例。Apr 26, 2025 am 12:03 AM

Tostoreauser'snameinaPHPsession,startthesessionwithsession_start(),thenassignthenameto$_SESSION['username'].1)Usesession_start()toinitializethesession.2)Assigntheuser'snameto$_SESSION['username'].Thisallowsyoutoaccessthenameacrossmultiplepages,enhanc

哪些常見問題會導致PHP會話失敗?哪些常見問題會導致PHP會話失敗?Apr 25, 2025 am 12:16 AM

PHPSession失效的原因包括配置錯誤、Cookie問題和Session過期。 1.配置錯誤:檢查並設置正確的session.save_path。 2.Cookie問題:確保Cookie設置正確。 3.Session過期:調整session.gc_maxlifetime值以延長會話時間。

您如何在PHP中調試與會話相關的問題?您如何在PHP中調試與會話相關的問題?Apr 25, 2025 am 12:12 AM

在PHP中調試會話問題的方法包括:1.檢查會話是否正確啟動;2.驗證會話ID的傳遞;3.檢查會話數據的存儲和讀取;4.查看服務器配置。通過輸出會話ID和數據、查看會話文件內容等方法,可以有效診斷和解決會話相關的問題。

如果session_start()被多次調用會發生什麼?如果session_start()被多次調用會發生什麼?Apr 25, 2025 am 12:06 AM

多次調用session_start()會導致警告信息和可能的數據覆蓋。 1)PHP會發出警告,提示session已啟動。 2)可能導致session數據意外覆蓋。 3)使用session_status()檢查session狀態,避免重複調用。

您如何在PHP中配置會話壽命?您如何在PHP中配置會話壽命?Apr 25, 2025 am 12:05 AM

在PHP中配置會話生命週期可以通過設置session.gc_maxlifetime和session.cookie_lifetime來實現。 1)session.gc_maxlifetime控制服務器端會話數據的存活時間,2)session.cookie_lifetime控制客戶端cookie的生命週期,設置為0時cookie在瀏覽器關閉時過期。

See all articles

熱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

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

熱工具

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具