Как я могу преобразовать
ereg_replace(".*\.(.*)$","\\1",$imgfile);
к
preg_replace... ?
?
У меня проблемы с этим?
Как я могу преобразовать
ereg_replace(".*\.(.*)$","\\1",$imgfile);
к
preg_replace... ?
?
У меня проблемы с этим?
preg_replace("/.*\.(.*)$/", "\\1", "foo.jpg")
Я не знаю, почему PHP требует разделителей /
. Единственная причина, по которой Perl, JS и т.д. В том, что они допускают литералы регулярных выражений, чего не делает PHP.
Вы должны знать 4 основных элемента для отображения шаблонов ereg в preg:
Добавить разделители (/): 'pattern' => '/pattern/'
разделитель Escape, если он является частью шаблона: 'patt/ern' =>
'/patt\/ern/'
Достичь этого программно следующим образом: $ereg_pattern = '<div>.+</div>';
$preg_pattern = '/' .addcslashes($ereg_pattern, '/') . '/';
eregi (нечувствительность к регистру): 'pattern' => '/pattern/i'
Итак, если
вы используете функцию eregi для соответствия case insenstive, просто добавьте
'i' в конце нового шаблона ('/pattern/').
Значения ASCII. В ereg, если вы используете номер в шаблоне, это
предположил, что вы имеете в виду ASCII символа. Но в
preg, число не рассматривается как значение ASCII. Итак, если ваш шаблон
содержат значение ASCII в выражении ereg (например: новая строка,
вкладки и т.д.), затем преобразуйте его в шестнадцатеричный и префикс с помощью \x. Example: 9(tab) becomes \x9 or alternatively use \t.
Надеюсь, это поможет.
добавьте любой char в начало и конец выражения, в этом случае и по традиции символ '/' preg_replace('/.*\.(.*)$/',"\\1",$imgfile);
Регулярное выражение не очень хорошо, лучше использовать strrpos и принять substr().
Regex работает медленно, используйте это. $ = Расширение зиЬзЬг ($ imgName, strrpos ($ imgName,) '');