【问题标题】:the wonders of converting ereg_replace to preg_replace [duplicate]将 ereg_replace 转换为 preg_replace 的奇迹 [重复]
【发布时间】:2012-08-06 15:37:23
【问题描述】:

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

谢谢

【问题讨论】:

  • 您能告诉我们您尝试过的方法以及问题所在吗?
  • 这里是PCRE: Differences from POSIX regex手册页的链接。
  • 我在表达式中添加了正斜杠,例如:$path = ereg_replace(/'\.[\.]+/', '', $path); $path = ereg_replace('//[/]+', '//', $path); 我已经用在线正则表达式检查器验证了这些,它指出了各种语法问题,所以我已经更正了它们,所以它们通过了检查器但是在实施时它们仍然失败。

标签: regex preg-replace ereg-replace


【解决方案1】:

为了将 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-05-26
    • 2013-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-17
    • 2011-09-13
    相关资源
    最近更新 更多