0

我需要将 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);

谢谢

4

1 回答 1

0

为了将 ereg 转换为 preg,你必须用分隔符包围你的正则表达式。
最常见的是/,但您可以使用除空格以外的任何字符。
您还必须注意您没有在正则表达式中选择分隔符,在这种情况下,您必须转义这些字符或使用另一个分隔符。

用你的例子:

ereg_replace('\.[\.]+', '', $path);

变成

preg_replace('/\.[.]+/', '', $path); 

或者

preg_replace('/\.{2,}/', '', path);

ereg_replace('/[/]+', '/', $path);

变成

preg_replace('/\/[\/]+/', '/', $path);

或者

preg_replace('~/[/]+~', '/', $path);

或者

preg_replace(':/{2,}:', '/', $path);
于 2013-10-12T11:45:02.910 回答