php7中不存在Preg_replace。我能做什么?

php7中不存在Preg_replace。我能做什么?,php,Php,我有一个从输入框中获取文件名的表单。在将文件上传到我的目录之前,我创建了一个目录,并将文件的扩展名形式“gpx”更改为“xml”。 在php5中,我需要preg_替换,但在php中,我不能再这样做了 我有以下代码: 我的旧代码是: if (!file_exists($dirPath)) { mkdir($dirPath, 0755,true); } $target = '/'.$mappe.'/'; $target = $dirPath .'/'. base

我有一个从输入框中获取文件名的表单。在将文件上传到我的目录之前,我创建了一个目录,并将文件的扩展名形式“gpx”更改为“xml”。 在php5中,我需要preg_替换,但在php中,我不能再这样做了

我有以下代码: 我的旧代码是:

  if (!file_exists($dirPath)) {
    mkdir($dirPath, 0755,true);
    }
    $target = '/'.$mappe.'/'; 
    $target = $dirPath .'/'. basename( $_FILES['gpsfilnavn']['name']); 
        $target =    preg_replace("/(\w+).gpx/ie","$1.'.xml'",$target);    
        $xmlfil = $xmlfil . basename( $_FILES['gpsfilnavn']['name']); 
        $xmlfil =    preg_replace("/(\w+).gpx/ie","$1.'.xml'",$xmlfil);     
        if(move_uploaded_file($_FILES['gpsfilnavn']['tmp_name'], $target)) {
        echo "The file ".  basename( $_FILES['gpsfilnavn']['name'])." has been  uploaded";

有谁能帮我修改一下吗?

自PHP7以来,关于
preg\u replace()
函数的内容发生了变化。
根据

7.0.0已删除对/e修改器的支持。改用


也许这对你有帮助?

我今天在将基于phpBB的网站从PHP5升级到PHP7时偶然发现了这个问题。我提出了三种不同的解决方案,可用于不同的场景,第二种是我唯一可行的解决方案,因为我在filesystem/db中存储了基于模板的regexp,而不是静态的regexp,我无法轻松更改它们

基本上,我是这样做的:

$input = preg_replace($search, $replace, $input);
对这样的事情:

$input = preg_replace($search, 
    function($m) use ($replace) { 
        $rep = $replace; 
        for ($i = 1; $i<count($m); $i++) { 
            $rep = str_replace('\\'.$i, '$m['.$i.']', $rep); 
            $rep = str_replace('\$'.$i, '$m['.$i.']', $rep); 
        }
        eval('$str='.$rep); 
        return $str;
    },
    $input);
$input=preg\u replace($search,
函数($m)使用($replace){
$rep=$replace;

对于($i=1;$iUm…preg_replace在PHP7中确实存在…
preg_replace
在PHP7中非常可用。从手册中可以看出:7.0.0对/e修饰符的支持已被删除。使用preg_replace_回调()相反,我知道这是一个奇怪的地方,但它总是值得一试,
preg\u replace
本身存在,但
/e
修饰符不存在。