использовать preg_quote ()
Код:
$key = 'acme/(.*)/(.*)';
$val = preg_quote('\\Acme\\Blog\\Controllers\\') . '$1::$2';
$uri = 'acme/Home/hello1';
$redirect = preg_replace('#^' . $key . '$#', $val, $uri);
echo $redirect;
Результат:
\Acme\Blog\Controllers\Home::hello1
Примечание:
Это недопустимый путь:
'\Acme\Blog\Controllers\$1::$2';
Поскольку обратную косую черту \
необходимо экранировать с другой обратной косой чертой \
, это на уровне строки. Если вы хотите создать строку, содержащую одну обратную косую черту, вам нужно поместить две из них.
$singleBackslash = '\\';
, поскольку обратная косая черта обрабатывается как escape-код, это даст вам ошибку разбора:
$singleBackslash = '\';
потому что обратный слеш избежал окончания '
если вы хотите иметь обратную косую черту в регулярных выражениях, вам нужно еще раз избежать ее, поэтому я использовал preg_quote () для уже экранированных обратной косой черты.