ereg_replace到preg_replace?

sml*_*sml 10 php regex pcre posix-ere

我该如何转换?

ereg_replace(".*\.(.*)$","\\1",$imgfile);
Run Code Online (Sandbox Code Playgroud)

preg_replace... ?
Run Code Online (Sandbox Code Playgroud)

我遇到了麻烦吗?

Sum*_*and 19

您应该知道将ereg模式移植到preg的4个主要内容:

  1. 添加分隔符(/):'pattern' => '/pattern/'

  2. Escape分隔符,如果它是模式的一部分:'patt/ern' => '/patt\/ern/'
    以下列方式以编程方式实现它:
    $ereg_pattern = '<div>.+</div>';
    $preg_pattern = '/' .addcslashes($ereg_pattern, '/') . '/';

  3. eregi(不区分大小写的匹配):'pattern' => '/pattern/i'因此,如果您使用eregi函数进行大小写不匹配,只需在新模式('/ pattern /')的末尾添加'i'.

  4. ASCII值:在ereg中,如果在模式中使用数字,则假定您指的是字符的ASCII.但在preg中,number不被视为ASCII值.因此,如果您的模式在ereg表达式中包含ASCII值(例如:new line,tabs等),则将其转换为十六进制,并以\ x为前缀.
    Example: 9(tab) becomes \x9 or alternatively use \t.

希望这会有所帮助.


Mat*_*hen 11

preg_replace("/.*\.(.*)$/", "\\1", "foo.jpg")
Run Code Online (Sandbox Code Playgroud)

我不知道为什么PHP需要/分隔符.Perl,JS等拥有它们的唯一原因是它们允许正则表达式文字,PHP没有.

  • 这是因为他们选择使用单个字符串来提供修饰符和正则表达式模式.` "/ [AZ]/I"`. (8认同)