首页 > 解决方案 > 在字符串中转义奇怪的斜杠组合

问题描述

嘿,伙计们知道我将如何进行 preg 匹配以下字符串吗?

$str = "\0/";

我似乎找不到逃避斜线的正确方法......

preg_match("/\\\\\0/\\\\/", $str);

...只是我尝试过的可能方法之一,但都失败了。

标签: phppreg-match

解决方案


正如评论中所指出的,使用"\0/"意味着你实际上拥有chr(0)并且/我认为你的意思是'\0/'没有特殊的转义。

你的正则表达式的问题是/. 正则表达式需要包含在一个分隔符中,它实际上不必是/. 但是,如果您想使用它,您使用的任何分隔符都必须在实际的正则表达式中进行转义。你没有这样做。正确的方法是:

preg_match('/\\\\0\//', '\0/', $m);

或使用不同的分隔符:

preg_match('~\\\\0/~', '\0/', $m);

但是,如果您确实想为"\0/"or找到一个正则表达式chr(0) . '/'

preg_match('/\\0\//', "\0/", $m); // or

preg_match('~\\0/~', "\0/", $m); // or

preg_match('/\0\//', "\0/", $m); // or

preg_match('~\0/~', "\0/", $m);

推荐阅读