Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何避免正则表达式中的斜杠?_Php_Regex - Fatal编程技术网

Php 如何避免正则表达式中的斜杠?

Php 如何避免正则表达式中的斜杠?,php,regex,Php,Regex,我制作了一些正则表达式来测试YouTube嵌入式视频: /^(http:\/\/www\.youtube\.com\/embed\/)[^\/\s\\]+$/ 当我测试它时,它可以实现我期望的效果,但问题是我需要将该正则表达式作为字符串传递给某个函数。特别是我使用的是htmlawed,我将以下字符串传递给函数: func('iframe=-*,src(match="/^(http:\/\/www\.youtube\.com\/embed\/)[^\/\s\\]+$/")'); 问题是上面的正

我制作了一些正则表达式来测试YouTube嵌入式视频:

/^(http:\/\/www\.youtube\.com\/embed\/)[^\/\s\\]+$/
当我测试它时,它可以实现我期望的效果,但问题是我需要将该正则表达式作为字符串传递给某个函数。特别是我使用的是htmlawed,我将以下字符串传递给函数:

func('iframe=-*,src(match="/^(http:\/\/www\.youtube\.com\/embed\/)[^\/\s\\]+$/")');
问题是上面的正则表达式可以工作,但它只是忽略斜杠,并接受任何东西来代替它们

这就是为什么我怀疑逃跑有问题


如果您能提供一些避免这些斜杠和反斜杠的替代方法,我将不胜感激。。。一定有办法吗?

如果您有一个字符串,则需要对字符串文本的反斜杠(和引号)进行转义。或者,根据函数如何从字符串构建正则表达式,您可能根本不需要转义斜杠(我不这么认为)


在PHP中,还可以使用不同的正则表达式分隔符:

~^(http://www\.youtube\.com/embed/)[^/\s\\\\]+$~

那个图书馆可能需要自己逃走;请尝试使用哪种语言。哪种代码?这是字符串定义吗?如果是,代码是什么?你需要提供实际的源代码,否则问题就不精确了,很难回答。。。我将继续尝试,因为斜杠需要转义,否则站点名称旁边的\//之类的内容将使匹配无效。我会继续尝试上面的建议,但只使用一个斜杠:
'iframe=-*,src(match=“/^(http:\\/\\/www\\\\\\/youtube\\\.com\\\/embed\\\/)[^\\\\\\\\]+$/”
是的,这可能是一个好主意,只要我们处理URL,我会记住一段时间future@Bergi:在PHP正则表达式中,不需要将反斜杠加倍,除非有一种情况需要使用文字反斜杠。我认为您编写的正则表达式应该在OPs字符串中,因为您在字符类中将反斜杠加倍。@Bergi:仅用于文字反斜杠。是的,正则表达式应该在字符串文本中。例如,要匹配一个空格字符,后跟一个反斜杠,您可以编写
preg\u match('/\s\\\\\\\/',$subject)
…这样,后面带有不可转义字符(
s
)的单个反斜杠将使其加上字符串中的字符?
~^(http://www\.youtube\.com/embed/)[^/\s\\\\]+$~