10

我怎样才能转换

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

preg_replace... ?

?

我有麻烦吗?

4

3 回答 3

20

您应该知道将 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 函数进行不区分大小写的匹配,只需在新模式('/pattern/')的末尾添加'i'。

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

希望这会有所帮助。

于 2013-06-10T22:26:27.493 回答
11
preg_replace("/.*\.(.*)$/", "\\1", "foo.jpg")

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

于 2010-03-14T21:49:26.037 回答
1

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

正则表达式很慢,使用它。$extension=substr($imgName,strrpos($imgName,'.'));

于 2010-03-14T21:47:17.220 回答