【发布时间】:2011-01-27 11:37:52
【问题描述】:
如何转换
ereg_replace(".*\.(.*)$","\\1",$imgfile);
到
preg_replace... ?
?
我遇到了麻烦?
【问题讨论】:
如何转换
ereg_replace(".*\.(.*)$","\\1",$imgfile);
到
preg_replace... ?
?
我遇到了麻烦?
【问题讨论】:
分隔符,在表达式的开头和结尾添加任何字符,在这种情况下,按照传统,'/' 字符 preg_replace('/.*\.(.*)$/',"\\1",$imgfile); 正则表达式不是很好,最好使用 strrpos 并采用 substr()。
正则表达式很慢,使用它。 $extension=substr($imgName,strrpos($imgName,'.'));
【讨论】:
preg_replace("/.*\.(.*)$/", "\\1", "foo.jpg")
我不知道为什么 PHP 需要 / 分隔符。 Perl、JS 等拥有它们的唯一原因是它们允许正则表达式文字,而 PHP 不允许。
【讨论】:
"/[a-z]/i".
$a = 'string/with/slashes'; $b = preg_replace('#/with/#', '-without-', $a); 是有效的,将$b 设置为string-without-slashes,并且您不必在给preg_replace 的正则表达式中转义/ .
您应该知道将 ereg 模式移植到 preg 的 4 个主要事项:
添加分隔符(/):'pattern' => '/pattern/'
转义分隔符如果它是模式的一部分:'patt/ern' =>
'/patt\/ern/'
通过以下方式以编程方式实现它:$ereg_pattern = '<div>.+</div>'; $preg_pattern = '/' .addcslashes($ereg_pattern, '/') . '/';
eregi(不区分大小写匹配):'pattern' => '/pattern/i' 所以,如果
您正在使用 eregi 函数进行不区分大小写的匹配,只需添加
'i' 在新模式的末尾('/pattern/')。
ASCII值:在ereg中,如果你在模式中使用数字,它是
假设您指的是字符的 ASCII。但在
preg, number 不被视为 ASCII 值。所以,如果你的模式
在 ereg 表达式中包含 ASCII 值(例如:换行,
制表符等)然后将其转换为十六进制并在其前面加上 \x。Example: 9(tab) becomes \x9 or alternatively use \t.
希望这会有所帮助。
【讨论】: