Archive for 2月 20th, 2009

PHPでの簡易文字列の一致の判定

金曜日, 2月 20th, 2009

PHPで、ある文字列の中に、特定の文字列が含まれているかを判定する際、完全一致なら、比較演算子 === で比較すればすぐですが、それ以外となると通常の比較演算では処理できないので、ereg()関数やpreg()関数などで処理することも多いと思います。

ただ、前方一致や後方一致、部分一致を行いたい場合は、それだけに正規表現を使うのもなんだかコストが高い。もっとシンプルに実装できないものか・・・。

例えば、JavaやC#でいうところのStringクラスのstartsWith()やendsWith()のようなことが出来れば・・・

という訳で、PHPで前方一致、後方一致、部分一致の比較を簡単に行う関数を作ってみました。



PHP:
  1. /**
  2. * 前方一致
  3. * $haystackが$needleから始まるか判定します。
  4. * @param string $haystack
  5. * @param string $needle
  6. * @return boolean
  7. */
  8. function startsWith($haystack, $needle){
  9.     return strpos($haystack, $needle, 0) === 0;
  10. }
  11.  
  12. /**
  13. * 後方一致
  14. * $haystackが$needleで終わるか判定します。
  15. * @param string $haystack
  16. * @param string $needle
  17. * @return boolean
  18. */
  19. function endsWith($haystack, $needle){
  20.     $length = (strlen($haystack) - strlen($needle));
  21.     // 文字列長が足りていない場合はFALSEを返します。
  22.     if($length <0) return FALSE;
  23.     return strpos($haystack, $needle, $length) !== FALSE;
  24. }
  25.  
  26. /**
  27. * 部分一致
  28. * $haystackの中に$needleが含まれているか判定します。
  29. * @param string $haystack
  30. * @param string $needle
  31. * @return boolean
  32. */
  33. function matchesIn($haystack, $needle){
  34.     return strpos($haystack, $needle) !== FALSE;
  35. }



上記コードの検証結果は以下を参照

(続きを読む...)

Get Adobe Flash playerPlugin by wpburn.com wordpress themes