Чудеса преобразования 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);
Другие вопросы по тегам