Чудеса преобразования ereg_replace в preg_replace
Мне нужно конвертировать 4 выражения ereg_replace в preg_replace. Я пробовал различные комбинации, основанные на уроках, и не слишком далеко продвигал работу своего сайта.
Может ли какая-то добрая душа помочь мне в их решении?
$path = ereg_replace('\.[\.]+', '', $path); // remove any '..' (jumping up a directory)
$path = ereg_replace('/[/]+', '/', $path);
$back_url = ereg_replace('dir=[^\&]*', "dir=$back_directory", $this->current_url);
$dir_url = ereg_replace('dir=[^\&]*', "dir=$dirpath", $this->current_url);
Спасибо
1 ответ
Чтобы преобразовать ereg в preg, вы должны окружить свое регулярное выражение разделителями.
Наиболее распространенным является /
но вы можете использовать примерно любой символ, кроме пробелов.
Вы также должны позаботиться о том, чтобы в регулярном выражении не было выбранного разделителя, в этом случае вы должны экранировать эти символы или использовать другой разделитель.
С вашими примерами:
ereg_replace('\.[\.]+', '', $path);
становится
preg_replace('/\.[.]+/', '', $path);
или же
preg_replace('/\.{2,}/', '', path);
а также
ereg_replace('/[/]+', '/', $path);
становится
preg_replace('/\/[\/]+/', '/', $path);
или же
preg_replace('~/[/]+~', '/', $path);
или же
preg_replace(':/{2,}:', '/', $path);