[PHP] startsWith, endsWith を実装する

Java で何の気なしに使っていた startsWith, endsWith
PHP で同様のことをしようと思ったのですが、これに相当するメソッドはないんですね。
そういえばpreg_matchとかでチェックしていたような覚えがあります。

そもそもstartsWith, endsWith とは

指定の文字列で始まる/終わるかを判定するメソッドです。
startsWith
public boolean startsWith(String prefix)
この文字列が、指定された接頭辞で始まるかどうかを判定します。

パラメータ:
prefix - 接頭辞
戻り値:
引数によって表される文字シーケンス、この文字列によって表される文字シーケンスの接頭辞である場合は true、そうでない場合は false。引数が空の文字列の場合や、equals(Object) メソッドによる判定においてこの String オブジェクトに等しい場合にも true が返される
導入されたバージョン:
1. 0

endsWith
public boolean endsWith(String suffix)
この文字列が、指定された接尾辞で終るかどうかを判定します。

パラメータ:
suffix - 接尾辞
戻り値:
引数によって表される文字シーケンスが、このオブジェクトによって表される文字シーケンスの接尾辞である場合は true、そうでない場合は false。引数が空の文字列の場合や、equals(Object) メソッドによる判定においてこの String オブジェクトに等しい場合にも、結果は true になる
引用: String (Java Platform SE 6)

使い方

```java boolean result = str.startsWith("abc"); boolean result = str.endsWith("efg"); ```

実装する

いろいろと試してみましたが以下の方法がシンプルな気がします。 ```php function startsWith($haystack, $needle) { return $needle === "" || strpos($haystack, $needle) === 0; } function endsWith($haystack, $needle) { return $needle === "" || substr($haystack, -strlen($needle)) === $needle; }

var_dump(startsWith(“hello world”, “hello”)); // true
var_dump(endsWith(“hello world”, “world”)); // true


引用: <a href="http://stackoverflow.com/questions/834303/startswith-and-endswith-functions-in-php">string - startsWith() and endsWith() functions in PHP - Stack Overflow</a>

同ページ内で一番評価の高い方法は以下です。
やっていることはほぼほぼ同じようですね。こちらの方が何をやってるか分かりやすいかも。
```php
function startsWith($haystack, $needle)
{
     $length = strlen($needle);
     return (substr($haystack, 0, $length) === $needle);
}

function endsWith($haystack, $needle)
{
    $length = strlen($needle);
    if ($length == 0) {
        return true;
    }

    return (substr($haystack, -$length) === $needle);
}