我如何转换ereg_replace to preg_replace?
ereg_replace(".*\.(.*)$","\\1",$imgfile);
到
preg_replace... ?
?
我遇到了麻烦吗?
我如何转换ereg_replace to preg_replace?
ereg_replace(".*\.(.*)$","\\1",$imgfile);
到
preg_replace... ?
?
我遇到了麻烦吗?
preg_replace("/.*\.(.*)$/", "\\1", "foo.jpg")
我不知道为什么PHP需要/
分隔符。 Perl,JS等有它们的唯一原因是它们允许正则表达式文字,而PHP不支持。
分隔符,在表达式的开始和结尾添加任何字符,在这种情况下,以及传统的'/'字符preg_replace('/.*\.(.*)$/',"\\1",$imgfile);
正则表达式不是很好,最好使用strrpos并使用substr()。
正则表达式很慢,请使用它。 $ extension = substr($ imgName,strrpos($ imgName,'。'));
我知道但有这个问题; preg_replace()[function.preg-replace]:C:\ wamp \ www中的未知修饰符'$'.. – sml 2010-03-14 21:48:33
是的,我的不好,也是编辑似乎破坏了表达式。最后最好在这种情况下使用substr()。你也可以使用preg_match。 – 2010-03-14 21:52:30
您可以使用反引号将您的代码转义(请参阅http://stackoverflow.com/editing-help)。 $修正看起来不错。 – 2010-03-14 21:57:32
你应该知道的4周主要的事情端口额日格图案浸渍料:
添加分隔符(/):'pattern' => '/pattern/'
逃生分隔符如果它的一部分模式:'patt/ern' => '/patt\/ern/'
通过以下方式以编程方式实现它:
$ereg_pattern = '<div>.+</div>';
$preg_pattern = '/' .addcslashes($ereg_pattern, '/') . '/';
eregi(不区分大小写匹配):'pattern' => '/pattern/i'
所以,如果 您使用eregi函数的情况下insenstive匹配,只需添加 '我' 在新格局的结束('/模式/')。
ASCII值:在额日格,如果在模式中使用数字,它是 假设你指的是一个字符的ASCII码。但在 preg中,数字不被视为ASCII值。因此,如果您的模式 在ereg表达式中包含ASCII值(例如:新行, 选项卡等),那么将其转换为十六进制并以\ x为前缀。
Example: 9(tab) becomes \x9 or alternatively use \t.
希望这会有所帮助。
有一个内置的转义分隔符之间的正则表达式字符串http://php.net/manual/en/function.preg-quote.php – 2017-06-16 20:18:45
这是因为他们选择使用单个字符串来提供修饰符和正则表达式模式。 ' “/ [A-Z]/I”'。 – kennytm 2011-04-08 16:09:27