ホームページ > バックエンド開発 > PHPの問題 > PHPに文字列比較の方法はあるのでしょうか?

PHPに文字列比較の方法はあるのでしょうか?

青灯夜游
リリース: 2023-03-15 14:58:01
オリジナル
2745 人が閲覧しました

php には文字列比較メソッドがあります。 PHP には、strcasecmp()、strcmp()、strcoll()、strnatcasecmp()、strnatcmp()、strncasecmp()、strncmp() など、さまざまな組み込みの文字列比較メソッドがあります。

PHPに文字列比較の方法はあるのでしょうか?

このチュートリアルの動作環境: Windows7 システム、PHP7.1 バージョン、DELL G3 コンピューター

文字列比較がありますphp のメソッド。

php にはさまざまな文字列比較メソッドが組み込まれています:

Function Description
strcasecmp() 2 つの文字列を比較します (大文字と小文字は区別されません)。
strcmp() 2 つの文字列を比較します (大文字と小文字は区別されます)。
strcoll() 2 つの文字列を比較します (ローカル設定に従って)。
strnatcasecmp() 「自然順序付け」アルゴリズムを使用して 2 つの文字列を比較します (大文字と小文字は区別されません)。
strnatcmp() 「自然順序付け」アルゴリズムを使用して 2 つの文字列を比較します (大文字と小文字は区別されます)。
strncasecmp() 最初の n 文字の文字列比較 (大文字と小文字は区別されません)。
strncmp() 最初の n 文字の文字列比較 (大文字と小文字は区別されます)。
substr_compare() 指定された開始位置から始まる 2 つの文字列を比較します (バイナリ セーフで大文字と小文字が区別されます)。

#1. バイトに基づいて文字列を比較する

バイトに基づいて文字列を比較する方法は次の 2 種類です。 strcmp() 関数と strcasecmp() 関数を使用しています。これら 2 つの関数の違いは、strcmp() 関数は文字の大文字と小文字を区別するのに対し、strcasecmp() 関数は文字の大文字と小文字を区別しないことです。これら 2 つの関数の実装方法は基本的に同じであるため、ここでは strcmp() 関数のみを紹介します。

strcmp() 関数は、2 つの文字列をバイト単位で比較するために使用されます。

構文形式は次のとおりです。

strcmp(string1, string2)
ログイン後にコピー

この関数では大文字と小文字が区別されることに注意してください。パラメータ string1 とパラメータ string2 は、比較する 2 つの文字列を指定します。それらが等しい場合、関数の戻り値は 0 になります。パラメータ string1 がパラメータ string2 より大きい場合、関数の戻り値は 0 より大きく、パラメータ string1 がパラメータ string2 より小さい場合、関数の戻り値は未満になります。 0.

srtcmp() 関数と strcasecmp() 関数を使用して、2 つの文字列をそれぞれバイト単位で比較します。コード例は次のとおりです:

<?php
 $str1 = "PHP学习手册!";               // 定义字符串常量
 $str2 = "PHP学习手册!";               // 定义字符串常量
 $str3 = "phpcn";                      // 定义字符串常量
 $str4 = "PHPCN";                      // 定义字符串常量
 echo strcmp($str1,$str2);             // 这两个字符串相等
 echo strcmp($str3,$str4);             // 注意该函数区分大小写
 echo strcasecmp($str3,$str4);          //该函数不区分大小写
?>
ログイン後にコピー

出力結果は次のとおりです:

0 1 0
ログイン後にコピー

注: PHP では、文字列の比較が非常に広範囲に適用されます。たとえば、ユーザーログインシステムに入力されたユーザー名とパスワードが正しいかどうかを比較するには、strcmp()関数を使用します。ユーザーとパスワードを検証するときにこの関数を使用しない場合は、入力されたユーザー名とパスワードでログインできます。大文字か小文字かに関係なく、それらが正しい限り。 srtcmp() 関数を使用すると、この状況は回避され、タイムリーかつ正確であり、ログインする前にすべての大文字と小文字が一致する必要があるため、Web サイトのセキュリティが向上します。

2. 自然ソート法による文字列の比較

PHP では strnatcmp() 関数を利用して自然ソート法による文字列の比較を実現します。自己認識ソート方法は、文字列の数値部分を比較し、文字列内の数値をサイズに応じて比較します。その構文は次の形式です。

strnatcmp(string1, string2)
ログイン後にコピー

ヒント: この関数では大文字と小文字が区別されます。パラメータ string1 とパラメータ string2 が等しい場合、関数の戻り値は 0 です。パラメータ string1 がパラメータ string2 より大きい場合、関数の戻り値は 0 より大きく、パラメータ string1 がパラメータ string2 より小さい場合、関数の戻り値は より小さくなります。 0.

注: 自然算術では、2 は 10 より小さいです。ただし、コンピューターの数列では、「10」の最初の数値が「1」であり、より小さいため、10 は 2 より小さくなります。 「2」。

strnatcmp() 関数を使用して自然な並べ替え方法に従って文字列を比較するコード例は次のとおりです。

<?php
 $str1 = "inter2.jpg";                  // 定义字符串常量
 $str2 = "inter10.jpg";                 // 定义字符串常量
 $str3 = "phpcn1";                      // 定义字符串常量
 $str4 = "PHPCN2";                      // 定义字符串常量
 echo strnatcmp($str1,$str2);           // 按自然排序法进行比较,返回-1
 echo strnatcmp($str3,$str4);           // 按自然排序法进行比较,返回1
?>
ログイン後にコピー

出力結果は次のとおりです。

-1  1
ログイン後にコピー

手順: For の比較によれば、 strnatcmp() 関数と同じ効果を持つが、サイズを区別しない別の strnatcasecmp() 関数を使用することもできます。

3. ソース文字列の位置から比較を開始する関数を指定します

strncmp() 関数は、文字列の最初の n 文字を比較するために使用されます。

構文は次の形式です:

strncmp(string1, string2, length)
ログイン後にコピー

パラメータの説明は次のとおりです: パラメータ string1 とパラメータ string2 が等しい場合、関数の戻り値は 0 になります; パラメータ string1 がより大きい場合、関数の戻り値は 0 になります。パラメータ string2 の場合、関数の戻り値は 0 より大きくなります。パラメータ string1 がパラメータ string2 より小さい場合、関数の戻り値は 0 より小さくなります。この関数では大文字と小文字が区別されます。

#パラメータの説明 string1比較に参加する最初の文字列オブジェクトを指定します比較に参加する 2 番目の文字列オブジェクトを指定します必須パラメータ。各文字列内の比較文字列の数を指定します
#string2
length

使用strncmp()函数比较字符串的前两个字符是否与源字符串相等,其实例代码如下所示:

<?php
 $str1 = "I like this";                  // 定义字符串常量
 $str2 = "i study php";                  // 定义字符串常量
 echo strncmp($str1,$str2,2);            // 比较前两个字符
?>
ログイン後にコピー

输出结果为:

-1
ログイン後にコピー

注释:从上面的代码中可以看出,由于变量$str2 中的字符串的首字母为小写,与变量$str1 中的字符串不匹配,所以两个字符串比较过后的函数返回值为 -1。

推荐学习:《PHP视频教程

以上がPHPに文字列比較の方法はあるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
関連するチュートリアル
人気のおすすめ
最新のコース
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート