我需要将4个ereg_replace表达式转换为preg_replace。我已经尝试了基于教程的各种组合,并且没有让我的网站工作得太远。
一些仁慈的灵魂可以帮助我解决这些问题吗?
$path = ereg_replace('\.[\.]+', '', $path); // remove any '..' (jumping up a directory)
$path = ereg_replace('/[/]+', '/', $path);
$back_url = ereg_replace('dir=[^\&]*', "dir=$back_directory", $this->current_url);
$dir_url = ereg_replace('dir=[^\&]*', "dir=$dirpath", $this->current_url);
谢谢
发布于 2013-10-12 11:45:03
为了将ereg转换为preg,您必须用分隔符将正则表达式括起来。
最常见的是/
,但您可以使用除空格之外的任何字符。
您还必须注意在regex中没有选定的分隔符,在这种情况下,您必须转义这些字符或使用另一个分隔符。
用你的例子:
ereg_replace('\.[\.]+', '', $path);
变成了
preg_replace('/\.[.]+/', '', $path);
或
preg_replace('/\.{2,}/', '', path);
和
ereg_replace('/[/]+', '/', $path);
变成了
preg_replace('/\/[\/]+/', '/', $path);
或
preg_replace('~/[/]+~', '/', $path);
或
preg_replace(':/{2,}:', '/', $path);
https://stackoverflow.com/questions/11882948
复制相似问题