PHP中的转义正则表达式

PHP中的转义正则表达式,php,regex,escaping,pcre,Php,Regex,Escaping,Pcre,我试图在PHP中转义PCRE,以便在脚本中使用。由于某种原因,当它被转义时,我无法让它运行,我只在正则表达式作为表单输入时才设法让它工作 我使用的正则表达式是: $pattern = '£((http|ftp|https):\/\/)?([\w\-_]+(?:(?:\.[\w\-_]+)+))([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?£'; 到目前为止,我已经尝试: preg\\ u quote():将正则表达式转换为以下内容并引发错

我试图在PHP中转义PCRE,以便在脚本中使用。由于某种原因,当它被转义时,我无法让它运行,我只在正则表达式作为表单输入时才设法让它工作

我使用的正则表达式是:

$pattern = '£((http|ftp|https):\/\/)?([\w\-_]+(?:(?:\.[\w\-_]+)+))([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?£';
到目前为止,我已经尝试:

preg\\ u quote():将正则表达式转换为以下内容并引发错误:((http\\ ftp\\ https):\/\/)\([\w\-\+(\?:(\?::\.[\w\-\\+)+)([\w\-,@\?\^=%&:/\+\*[\w\-\\\\\\\\\?^=%&/\\\++%/\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

htmlentities():给出错误:警告:preg_match():未知修饰符“a”

addslashes():同上

三者的混合物:同上


有人知道我做错了什么吗?

这里的问题是英镑符号,用感叹号代替它解决了问题。 工作用语:

$pattern = '!((http|ftp|https):\/\/)?([\w\-_]+(?:(?:\.[\w\-_]+)+))([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?!';

由于某些原因,这在没有转义函数的情况下运行良好。

似乎是从其他地方复制粘贴正则表达式,并且在复制时复制隐藏的垃圾字符,而不是“磅”符号,使用其他符号或使用键盘重新键入它来修复问题修复它!看来英镑符号是个问题,谢谢。我在考虑使用分隔符时遇到了一些问题,因为正则表达式使用了很多符号。我更喜欢使用/或!如下例所示。