ホームページ 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 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

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 と組み合わせることで、より優れたパフォーマンスの最適化と拡張を実現できます。この記事では、いくつかのヒントと提案を紹介し、いくつかのコード例を示します。 1. HTTP リクエストの削減 HTTP リクエストの数は、Web アプリケーションの読み込み速度に直接影響します。合格

生成 AI がソフトウェア開発を変える 10 の方法 生成 AI がソフトウェア開発を変える 10 の方法 Mar 11, 2024 pm 12:10 PM

翻訳者 | Chen Jun によるレビュー | Chonglou 1990 年代、ソフトウェア プログラミングというと、通常、エディタを選択し、コードを CVS または SVN コード ベースにチェックインし、コードを実行可能ファイルにコンパイルすることを意味していました。 Eclipse や Visual Studio などの対応する統合開発環境 (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 は、フロントエンドとバックエンドの開発で広く使用されている 2 つのテクノロジであり、これらを組み合わせることで、エンタープライズ レベルのアプリケーションの開発と展開に多くの利点をもたらします。この記事では、コード例を通じて、Vue.js と ASP.NET を使用してエンタープライズ レベルのアプリケーションを開発およびデプロイする方法を紹介します。まず、インストールする必要があります

ASP.NETプログラムでMySQL接続プールを正しく構成して使用する方法は? ASP.NETプログラムでMySQL接続プールを正しく構成して使用する方法は? Jun 29, 2023 pm 12:56 PM

ASP.NETプログラムでMySQL接続プールを正しく構成して使用する方法は?インターネットの発展とデータ量の増加に伴い、データベースへのアクセスと接続の需要も増加しています。データベースのパフォーマンスと安定性を向上させるために、接続プーリングは不可欠なテクノロジーになっています。この記事では、データベースの効率と応答速度を向上させるために、ASP.NET プログラムで MySQL 接続プールを正しく構成および使用する方法を主に紹介します。 1. コネクションプーリングの概念と機能 コネクションプーリングはデータベースコネクションを再利用する技術であり、プログラムの冒頭で使用されます。

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 の組み込みオブジェクトには、「リクエスト」、「レスポンス」、「セッション」、「サーバー」、「アプリケーション」、 「HttpContext」、「Cache」、「Trace」、「Cookie」、および「Server.MapPath」: 1. リクエスト、クライアントによって発行された HTTP リクエストを示します; 2. レスポンス: Web サーバーによって返された HTTP 応答を示します。クライアントなど

See all articles