Как я могу конвертировать
ereg_replace(".*\.(.*)$","\\1",$imgfile);
в
preg_replace... ?
?
У меня проблемы с этим?
preg_replace("/.*\.(.*)$/", "\\1", "foo.jpg")
Я не знаю, почему PHP требует /
delimiters. Единственная причина, по которой Perl, JS и т. Д. – это то, что они допускают литералы регулярных выражений, которых нет в PHP.
Вы должны знать 4 основных элемента для переноса шаблонов ereg в preg:
Добавить разделители (/): 'pattern' => '/pattern/'
Escape delimiter, если он является частью шаблона: '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.
Надеюсь, это поможет.
разделители, добавьте любой символ в начало и конец выражения, в этом случае и по традиции символ '/' preg_replace('/.*\.(.*)$/',"\\1",$imgfile);
Регулярное выражение не очень хорошо, лучше использовать strrpos и взять substr ().
Регулярно медленно, используйте это. $ удлинительные = зиЬзЬг ($ imgName, strrpos ($ imgName,) '');