現在の位置: ホーム> 最新記事一覧> strnatcasecmpを使用して各行をマルチラインテキストで自然に並べ替える方法は?

strnatcasecmpを使用して各行をマルチラインテキストで自然に並べ替える方法は?

gitbox 2025-05-27

PHPでは、 strnatcasecmp関数は、自然な秩序比較を実行するために使用される関数です。文字列の数字を考慮する文字列を比較し、辞書の順序ではなく、数字のサイズで並べ替えます。これは、ファイル名の並べ替え、項目のリストなど、数字の数字を使用してテキストを処理するのに特に便利です。

この記事では、PHPのstrnatcasecmp関数を使用して、複数のテキストを自然に並べ替える方法について説明します。

1. strnatcasecmp関数は何ですか?

strnatcasecmp関数は、2つの文字列を自然な順序で比較するために使用されます。これは、ケースを無視し、文字列の数字に従って自然な順序で並べ替えます。これにより、数値を使用してテキストを扱うときに、通常のSTRCMP関数よりも正確になります。

 int strnatcasecmp ( string $str1 , string $str2 )
  • Str1Str2は、比較する2つの文字列です。

  • 戻り値は整数です。STR1STR2未満の場合、負の値を返します。 str1str2より大きい場合、正の値を返します。それらが等しい場合、それは0を返します。

2。例:複数のテキストの行を自然に並べ替える方法は?

自然なソートに従ってソートする必要がある次のテキスト行があるとします。サンプルテキストには、数字のいくつかの行が含まれています。

 line10
line2
line1
line20
line11
line3

これらのテキストの行は、アルファベット順の順序ではなく、数値サイズで必要です。

3. strnatcasecmpを使用してマルチラインテキストを並べ替えます

最初にこれらのテキストを配列に保存し、 strnatcasecmpを使用してUsort関数を使用してソートすることができます。これが完全なサンプルコードです:

 <?php
// マルチラインテキスト配列
$text = [
    'line10',
    'line2',
    'line1',
    'line20',
    'line11',
    'line3'
];

// 使用 strnatcasecmp ソート配列
usort($text, 'strnatcasecmp');

// 出力ソート付き配列
foreach ($text as $line) {
    echo $line . PHP_EOL;
}
?>

説明する:

  • USORT関数を使用して、配列$テキストをソートします。 USORT関数は2つのパラメーターを受け入れます。1つ目は配列で、2つ目はソートの比較関数です。ここでは、 Strnatcasecmp関数をコンパレータとして使用します。

  • strnatcasecmpは、文字列の数値に従って自然にソートされます。

  • ソートされた出力は次のとおりです。

 line1
line2
line3
line10
line11
line20

4。URLを含むプロセステキスト

URLを含むテキストを処理する場合、ドメイン名とパスを含むこれらのテキストをソートする必要がある場合があります。テキストに複数のURLが含まれていると仮定すると、 strnatcasecmpを使用してソートするにはどうすればよいですか?

 <?php
// 含む URL テキスト配列
$urls = [
    'https://example.com/page10',
    'https://gitbox.net/page2',
    'https://gitbox.net/page1',
    'https://example.com/page20',
    'https://gitbox.net/page11',
    'https://example.com/page3'
];

// 使用 strnatcasecmp 右 URL ソート用の配列
usort($urls, 'strnatcasecmp');

// 出力ソート URL
foreach ($urls as $url) {
    echo $url . PHP_EOL;
}
?>

注:上記の例では、すべてのURLのドメイン名をgitbox.netに置き換えました。このコードは、URLのパス部分(つまり、 /ページの後の数値)に基づいて自然にソートされます。

5。概要

STRNATCASECMP関数は、特に数字を含む文字列を並べ替える必要がある場合に非常に便利なツールです。 StrnatCaseCMPUSORTを使用することにより、複数のテキストまたはURLを自然に簡単に並べ替えることができます。

このソートメソッドは、数値部分を合理的にソートするだけでなく、従来の文字列比較方法がもたらすソートの問題を回避します。 strnatcasecmpは、数値を含むテキストを扱う際に非常に実用的な機能です。