PHPで、ある文字列の中に、特定の文字列が含まれているかを判定する際、完全一致なら、比較演算子 === で比較すればすぐですが、それ以外となると通常の比較演算では処理できないので、ereg()関数やpreg()関数などで処理することも多いと思います。
ただ、前方一致や後方一致、部分一致を行いたい場合は、それだけに正規表現を使うのもなんだかコストが高い。もっとシンプルに実装できないものか・・・。
例えば、JavaやC#でいうところのStringクラスのstartsWith()やendsWith()のようなことが出来れば・・・
という訳で、PHPで前方一致、後方一致、部分一致の比較を簡単に行う関数を作ってみました。
PHP:
/**
* 前方一致
* $haystackが$needleから始まるか判定します。
* @param string $haystack
* @param string $needle
* @return boolean
*/
function startsWith($haystack, $needle){
return strpos($haystack,
$needle,
0) ===
0;
}
/**
* 後方一致
* $haystackが$needleで終わるか判定します。
* @param string $haystack
* @param string $needle
* @return boolean
*/
function endsWith($haystack, $needle){
// 文字列長が足りていない場合はFALSEを返します。
if($length <0) return FALSE;
return strpos($haystack,
$needle,
$length) !==
FALSE;
}
/**
* 部分一致
* $haystackの中に$needleが含まれているか判定します。
* @param string $haystack
* @param string $needle
* @return boolean
*/
function matchesIn($haystack, $needle){
return strpos($haystack,
$needle) !==
FALSE;
}
上記コードの検証結果は以下を参照
(続きを読む...)