php 正则从右向左搜索的语法如何写啊?
例如有下面的一个字符串:
$str = "http://www.aaa.com/aa/aa/aa/aa.rar/.page";
因为aa.rar之后的字符串是固定的,之前的字符串是变化的没有规律可言,
其实我就想匹配得到aa.rar(.rar是固定的aa即文件名也不是固定的)
一时想不起来什么办法,所以想问一下从后向前匹配如何写,当然大家如果有好的办法,希望分享一下,谢谢

解决方案 »

  1.   

    个人想法:
      $str = "http://www.aaa.com/aa/aa/aa/aa.rar/.page"; 
      你想得到aa.rar,
      1. 可以用字符串处理函数,explode('/'),这样返回的数组的倒数第二个值,是你想得到的;
      2. aa.rar是出现在‘/’字符之前和之间的,所以可以利用‘/’字符的位置,截取aa.rar;
      3. 利用正则表达式
          $reg = '/[\:\/\.\w\d]+\/([\w]{1}[\w\d]*\.rar)\/.+/';
         $replaceMent = '\${1}\';
         $fileName = preg_replace(reg,$replaceMent,$str);
         $fileName 为你要的值
          
      

  2.   


    $pat = '#(.*)/((.*).rar)/.page$#'; $str0 = "sdfsdfsdfaa.com/aa/aa/aa/aa.rar/.page";
    $str1 = "http://wwsdfsdfm/aa/aa/aa/aa.rar/.page";
    $str2 = "要可耕地地.com/aa/aa/aa/aa.rar/.page";preg_match($pat,$str2,$matches);
    echo $matches[2];           //三个str都输出 aa.rar, 如果只要aa的名字则取echo $matches[3];