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