2つの文字に挟まれた文字列を取得する

ハローワールドイヌネコヤギヘビカニブタウシ
ヤギ
カニ
ヘビ

ソース
	require_once 'StringUtil.php';
	$str="ハローワールドイヌネコヤギヘビカニブタウシ";
	$s1="ヤギ";
	$s2="カニ";
	$util=new StringUtil();
	$s3=$util->markInner($str,$s1,$s2);

	echo s3;

StringUtil.php
class StringUtil{
	/**
	 * 2つの囲み文字に挟まれた文字列を取得する
	 * @param  $str	対象文字列
	 * @param  $s1	囲み文字1
	 * @param  $s2	囲み文字2
	 */
	public function markInner($str,$s1,$s2){

		$s_r=$this->stringRight($str,$s1);

		$s=$this->stringLeft($s_r,$s2);


		return $s;
	}



	/**
	 * 左から印文字を探し、見つかった場所から左側の文字列を返す。(印文字は含めず)
	 * 検索文字列が存在しない場合は、対象文字列をそのまま返す。
	 * 検索文字列が先頭にあった場合も、対象文字列をそのまま返す。
	 * @param  $str 対象文字列
	 * @param  $mark 印文字列
	 * @return string
	 */
	function stringLeft($str,$mark){
		$a=mb_strpos($str,$mark,0,'utf8');
		if(!isset($a)){return $str;}
		$len=mb_strlen($str,'utf8');
		$rtn=mb_substr($str,0,$a,'utf8');

		return $rtn;
	}

	/**
	 * 左から印文字を探し、見つかった場所から右側の文字列を返す。(印文字は含めず)
	 * 検索文字列が存在しない場合は、対象文字列をそのまま返す。
	 * 検索文字列が先頭にあった場合も、対象文字列をそのまま返す。
	 * @param  $str 対象文字列
	 * @param  $mark 印文字
	 * @return string 
	 */
	function stringRight($str,$mark){
		$a=mb_strpos($str,$mark,0,'utf8');
		if(!isset($a)){return $str;}
		$len=mb_strlen($str,'utf8');
		$m_l=mb_strlen($mark,'utf8');
		$rtn=mb_substr($str,$a+$m_l,$len,'utf8');

		return $rtn;
	}





}