ereg_replace到preg_replace?

时间:2010-03-14 21:44:17

标签: php regex pcre posix-ere

如何转换

ereg_replace(".*\.(.*)$","\\1",$imgfile);

preg_replace... ?

我遇到了麻烦?

3 个答案:

答案 0 :(得分:18)

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

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

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

  3. eregi (不区分大小写的匹配):'pattern' => '/pattern/i'所以,如果 你使用eregi函数进行不区分大小写的匹配,只需添加即可 'i'在新模式结束时('/ pattern /').

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

  5. 希望这会有所帮助。

答案 1 :(得分:11)

preg_replace("/.*\.(.*)$/", "\\1", "foo.jpg")

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

答案 2 :(得分:1)

分隔符,在表达式的开头和结尾添加任何字符,在本例中,按照传统,'/'字符preg_replace('/.*\.(.*)$/',"\\1",$imgfile);正则表达式不是很好,最好使用strrpos并使用substr()

正则表达式很慢,使用它。 $延长= SUBSTR($ imgName,strrpos($ imgName,) '');