Php 简单的preg_replace()不适合我:/

Php 简单的preg_replace()不适合我:/,php,regex,Php,Regex,所以第三行对我没有任何帮助,有人能说我错在哪里吗?如果我把其他的东西放进去而不是\/ 提前感谢;) 这将起作用: $str = "{Controller}/{Action}"; $str = preg_replace("/\//","\\/",$str); $str = preg_replace("/(\{\w+\})\\/(\{\w+\})/","\\1 slash \\2",$str); echo $str; 输出:{Controller}斜杠{Action} 备注: 您应该使用单引号来

所以第三行对我没有任何帮助,有人能说我错在哪里吗?如果我把其他的东西放进去而不是\/ 提前感谢;)

这将起作用:

$str = "{Controller}/{Action}";
$str = preg_replace("/\//","\\/",$str);
$str = preg_replace("/(\{\w+\})\\/(\{\w+\})/","\\1 slash \\2",$str);
echo $str;
输出:
{Controller}斜杠{Action}

备注:

  • 您应该使用单引号来减少转义的需要,从而提高可读性
  • <>你也应该考虑使用另一个分隔符,如果你是匹配字面斜杠(如,但任何东西)
您需要在第三行中使用
\\\/
,而不是
\\/
。原因是在
\\/
中,
\\
表示单个反斜杠,而
/
表示正则表达式的结尾。在
\\\/
中,
\`表示反斜杠,
\/`表示正斜杠。
$str = "{Controller}/{Action}";
$str = preg_replace('#(\{\w+\})/(\{\w+\})#', '\1 slash \2', $str);

echo $str;