如何转换
ereg_replace(".*\.(.*)$","\\1",$imgfile);
到
preg_replace... ?
我遇到了麻烦?
答案 0 :(得分:18)
您应该知道将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值(例如:new line,
选项卡等)然后将其转换为十六进制,并以\ x。为前缀
Example: 9(tab) becomes \x9 or alternatively use \t.
希望这会有所帮助。
答案 1 :(得分:11)
preg_replace("/.*\.(.*)$/", "\\1", "foo.jpg")
我不知道为什么PHP需要/
分隔符。 Perl,JS等拥有它们的唯一原因是它们允许正则表达式文字,PHP没有。
答案 2 :(得分:1)
分隔符,在表达式的开头和结尾添加任何字符,在本例中,按照传统,'/'字符preg_replace('/.*\.(.*)$/',"\\1",$imgfile);
正则表达式不是很好,最好使用strrpos并使用substr()
正则表达式很慢,使用它。 $延长= SUBSTR($ imgName,strrpos($ imgName,) '');