現在の位置: ホーム> 最新記事一覧> ユーザーエクスペリエンスを向上させるために、多言語Webサイトで自然なソートにStrnatcmpを使用する方法は?

ユーザーエクスペリエンスを向上させるために、多言語Webサイトで自然なソートにStrnatcmpを使用する方法は?

gitbox 2025-09-04

ユーザーエクスペリエンスを向上させるために、多言語Webサイトで自然なソートにStrnatcmpを使用する方法は?

多言語のWebサイトを構築する場合、ユーザーエクスペリエンスは非常に重要です。特にリストやディレクトリを表示する場合、ウェブサイトをより友好的で直感的にするために、ソート方法はユーザーの閲覧効率と全体的な経験に直接影響します。従来の辞書順序は、特に混合数と文字の文字列が含まれている場合、一部のコンテンツに直感的ではない場合があります。これを行うには、「ナチュラルソート」にstrnatcmp関数を使用することが理想的なソリューションになります。

自然なソートとは何ですか?

名前が示すように、自然なソートは、人間の読書習慣に従って文字列を並べ替えることです。たとえば、文字列「Apple2」と「Apple10」の場合、従来の辞書のソートは、文字の文字によって比較されるため、「Apple10」に先行します。しかし、人間は通常、「Apple2」が「Apple10」より先にあるべきだと考えています。自然なソートは、数字のサイズと位置を考慮して、人間の直感に沿ったソートをより並べます。

strnatcmp関数の紹介

strnatcmpは、PHPの文字列比較関数であり、自然なソートを実装できます。この関数はstrcmpに似ていますが、後者とは異なり、文字列を比較して自然な並べ替えのルールに準拠するときに、その数値部分を自動的に処理します。具体的には、 strnatcmpが2つの文字列を比較すると、文字ごとの比較ではなく、その数値を全体として扱います。

strnatcmpを使用して自然なソートを実装する方法は?

PHPでは、 strnatcmpの使用は非常に簡単です。構文は次のとおりです。

 <span><span><span class="hljs-title function_ invoke__">strnatcmp</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$string1</span></span><span>, </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$string2</span></span><span>): </span><span><span class="hljs-keyword">int</span></span><span>
</span></span>
  • $ string1 :最初の文字列

  • $ string2 :2番目の文字列

返品値:

  • 0未満: $ string1$ string2の先にある場合

  • 0を超える: $ string1$ string2の後にランク付けされる場合

  • 0に等しい:2つの文字列が等しい場合

例:多言語のWebサイトでstrnatcmpを使用してコンテンツを並べ替える方法は?

さまざまな言語の記事タイトルを備えた多言語Webサイトがあるとします。これらのタイトルリストを自然な順序で表示したいと思います。 strnatcmpの前に、PHPデフォルトの辞書ソートは、数字と文字の混合配置を引き起こす可能性がありますが、これは十分に直感的ではありません。 strnatcmpを使用すると、数値部分が人間の理解によってソートされるようにすることができます。

コードの例

<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// これが当社のウェブサイトのタイトル配列であると仮定します,異なる数字が含まれています</span></span><span>
</span><span><span class="hljs-variable">$titles</span></span><span> = [
    </span><span><span class="hljs-string">"Article 10: PHP Introduction"</span></span><span>,
    </span><span><span class="hljs-string">"Article 2: HTML Basics"</span></span><span>,
    </span><span><span class="hljs-string">"Article 1: CSS Fundamentals"</span></span><span>,
    </span><span><span class="hljs-string">"Article 11: JavaScript Essentials"</span></span><span>,
    </span><span><span class="hljs-string">"Article 3: Python for Beginners"</span></span><span>
];

</span><span><span class="hljs-comment">// 使用 uasort 関数の組み合わせ strnatcmp タイトルを自然に注文してください</span></span><span>
</span><span><span class="hljs-title function_ invoke__">uasort</span></span><span>(</span><span><span class="hljs-variable">$titles</span></span><span>, </span><span><span class="hljs-string">'strnatcmp'</span></span><span>);

</span><span><span class="hljs-comment">// 出力ソートされた結果</span></span><span>
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$titles</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$title</span></span><span>) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$title</span></span><span> . </span><span><span class="hljs-string">"&lt;br&gt;"</span></span><span>;
}
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

コードを説明してください

  1. 各タイトルに数字が含まれるタイトル$タイトルの配列を作成します。

  2. UASORT関数を使用して、配列をソートします。 UASORTは、配列のキーを変更せずに保持し、指定された比較関数(これはstrnatcmp )に従って並べ替えます。

  3. 最後に、 foreachループを使用して、ソートされた結果を出力します。

ソートされた出力は、次のように自然な順序で配置されます。

 <span><span><span class="hljs-selector-tag">Article</span></span><span> </span><span><span class="hljs-number">1</span></span><span>: </span><span><span class="hljs-selector-tag">CSS</span></span><span> </span><span><span class="hljs-selector-tag">Fundamentals</span></span><span>
</span><span><span class="hljs-selector-tag">Article</span></span><span> </span><span><span class="hljs-number">2</span></span><span>: </span><span><span class="hljs-selector-tag">HTML</span></span><span> </span><span><span class="hljs-selector-tag">Basics</span></span><span>
</span><span><span class="hljs-selector-tag">Article</span></span><span> </span><span><span class="hljs-number">3</span></span><span>: </span><span><span class="hljs-selector-tag">Python</span></span><span> </span><span><span class="hljs-selector-tag">for</span></span><span> </span><span><span class="hljs-selector-tag">Beginners</span></span><span>
</span><span><span class="hljs-selector-tag">Article</span></span><span> </span><span><span class="hljs-number">10</span></span><span>: </span><span><span class="hljs-selector-tag">PHP</span></span><span> </span><span><span class="hljs-selector-tag">Introduction</span></span><span>
</span><span><span class="hljs-selector-tag">Article</span></span><span> </span><span><span class="hljs-number">11</span></span><span>: </span><span><span class="hljs-selector-tag">JavaScript</span></span><span> </span><span><span class="hljs-selector-tag">Essentials</span></span><span>
</span></span>

多言語環境でのアプリケーション

多言語のWebサイトでは、タイトルには語彙と異なる言語の数字が含まれる場合があります。 strnatcmpを使用することにより、キャラクターのエンコードや言語の違いのために問題を分類することなく、すべての言語のコンテンツを自然な順序でソートできるようにすることができます。たとえば、 strnatcmpは、ユーザーが期待する方法でソートすることができます。

例:異なる言語での混合ソート

<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// これが多言語のウェブサイトのタイトル配列であると仮定します</span></span><span>
</span><span><span class="hljs-variable">$titles</span></span><span> = [
    </span><span><span class="hljs-string">"記事 2: PHP導入"</span></span><span>,  </span><span><span class="hljs-comment">// 中国語</span></span><span>
    </span><span><span class="hljs-string">"Article 10: Introduction to PHP"</span></span><span>,  </span><span><span class="hljs-comment">// 英文</span></span><span>
    </span><span><span class="hljs-string">"Article 1: HTML Basics"</span></span><span>,  </span><span><span class="hljs-comment">// 英文</span></span><span>
    </span><span><span class="hljs-string">"Article 3: Python for Beginners"</span></span><span>,  </span><span><span class="hljs-comment">// 英文</span></span><span>
    </span><span><span class="hljs-string">"記事 1: CSSベース"</span></span><span>  </span><span><span class="hljs-comment">// 中国語</span></span><span>
];

</span><span><span class="hljs-comment">// 使用 uasort 関数の組み合わせ strnatcmp タイトルを自然に注文してください</span></span><span>
</span><span><span class="hljs-title function_ invoke__">uasort</span></span><span>(</span><span><span class="hljs-variable">$titles</span></span><span>, </span><span><span class="hljs-string">'strnatcmp'</span></span><span>);

</span><span><span class="hljs-comment">// 出力ソートされた結果</span></span><span>
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$titles</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$title</span></span><span>) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$title</span></span><span> . </span><span><span class="hljs-string">"&lt;br&gt;"</span></span><span>;
}
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

結果:

 <span><span><span class="hljs-attr">Article 1:</span></span><span> </span><span><span class="hljs-string">HTML</span></span><span> </span><span><span class="hljs-string">Basics</span></span><span>
</span><span><span class="hljs-attr">Article 3:</span></span><span> </span><span><span class="hljs-string">Python</span></span><span> </span><span><span class="hljs-string">for</span></span><span> </span><span><span class="hljs-string">Beginners</span></span><span>
</span><span><span class="hljs-attr">Article 10:</span></span><span> </span><span><span class="hljs-string">Introduction</span></span><span> </span><span><span class="hljs-string">to</span></span><span> </span><span><span class="hljs-string">PHP</span></span><span>
</span><span><span class="hljs-string">記事</span></span><span> </span><span><span class="hljs-attr">1:</span></span><span> </span><span><span class="hljs-string">CSSベース</span></span><span>
</span><span><span class="hljs-string">記事</span></span><span> </span><span><span class="hljs-attr">2:</span></span><span> </span><span><span class="hljs-string">PHP導入</span></span><span>
</span></span>

なぜSTRNATCMPを使用してユーザーエクスペリエンスを向上させるのですか?

  1. 直感的なソート結果:ユーザーは、「Apple2」の前で「Apple10」のランキングを見たくないことがよくあります。 Stranatcmpは、この状況を回避し、数値部分の自然な並べ替えを確保できます。

  2. ウェブサイトの親しみやすさの向上:多言語のウェブサイト、特に混合数とテキストを含むコンテンツの場合、 Strnatcmpは、中国語、英語、その他の言語であろうと、ユーザーの読書習慣に順序付けられていることを保証できます。

  3. 開発プロセスを簡素化します。開発プロセス中に、 STRNATCMPを使用することで、複雑なソートアルゴリズムを手動で作成し、時間を節約し、開発効率を向上させることができます。

要約します

STRNATCMPは、多言語WebサイトでPHP開発者が自然なソートを達成するのに役立つ非常に強力なツールです。この関数を通じて、開発者は、リスト、ディレクトリ、多言語のタイトルであろうと、ユーザーの直感的な感情に従ってコンテンツをソートすることを保証できます。これにより、ユーザーのブラウジングエクスペリエンスが大幅に向上します。