function endsWith($haystack, $needle) { return (strlen($haystack) > strlen($needle)) ? (substr($haystack, -strlen($needle)) == $needle) : false; } 我ながらなんて分かりづらい書き方しているんだ…とちょっと暗い気持ちになりました…。 needleよりもhaystackの方が文字数が大きければ、haystackの後ろからneedleの文字数分抜き出して文字列の比較をし、一致すればTRUE、それ以外はFALSE ※個人で使っている関数はstrlenをmb_strlenにしてマルチバイトにも対応するようにしています。 ですが、自分の環境でmb_strlenをstrlenにしてもちゃんと動く模様…。 ※追記 2016/03/02 UTF8で文字を扱う環境で