function fun($a,$b,$str) {
  return preg_replace("/$a(.*)$b.*/","\\1",$str);
}你的举例与说明有矛盾

解决方案 »

  1.   

    你先取得子串参数1在参数3中的位置,将参数1在参数3中的位置加上参数1的长度~~(a)
    再取得子串参数2在参数3中的位置~~~(b)
    b - a 即结果的长度~~~而a即长度为b-a的子串在参数3中的启始位置~对参数3求子串,得到结果
      

  2.   

    $str = "1234567890abcdefghijklmn";function fun($start, $end, $str)
    {
        $start = strpos($str, $start) + strlen($start);
        $end   = strpos($str, $end);
        $len   = $end-$start;
        return substr($str, $start, $len);
    }
    echo fun("123","890",$str);,
      

  3.   

    To:
     xuzuning(唠叨) 
     你出的函数没有去掉参数一前的部分
     ice_berg16(寻梦的稻草人)的可以达到目的
     xuzuning(唠叨)兄能否出一个用政则表达式的完整函数并讲讲 谢谢
     关于测试的代码如下
     
    ////////////////////////////////////////////////
    <?
    function cut1($a,$b,$str) {
      return preg_replace("/$a(.*)$b.*/","\\1",$str);
    }
    function cut2($start, $end, $str)
    {
        $start = strpos($str, $start) + strlen($start);
        $end   = strpos($str, $end);
        $len   = $end-$start;
        return substr($str, $start, $len);
    }$str = "1234567890abcdefghijklmn";echo $str."<br>";
    echo cut1("890","jk",$str);
    echo "<br>";
    echo cut2("890","jk",$str);?>////////Out Put//////////////
    1234567890abcdefghijklmn
    1234567abcdefghi
    abcdefghi
      

  4.   

    function cut1($a,$b,$str) {
      return preg_replace("/.*$a(.*)$b.*/","\\1",$str);
    }在你开始的要求中,并未明确提出此条件。至少给出的样例没有表现出此要求