我试图逃避PHP中的PCRE以用于脚本。出于某种原因,我无法在转义时使其正常运行,我只是设法在REGEX作为表单输入提供时才能正常工作。
我正在使用的正则表达式是:
$pattern = '£((http|ftp|https):\/\/)?([\w\-_]+(?:(?:\.[\w\-_]+)+))([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?£';
到目前为止,我已经尝试过:
preg_quote():将正则表达式转换为以下内容并抛出错误:£((http \ | ftp \ | https):\ / \ /)\?([\ w \ -_] +(\? :(?:\:\ [\ W \ -_] +。)+))([\ W \ - \,@ \ \ ^ \ =%&安培;:/?〜\ +#] * [\ W \ ? - \ @ \ \ ^ \ =%&安培; /〜\ +#])\ A£
htmlentities():给出错误:警告:preg_match():未知修饰符'a'
addslashes():与上面相同
3的混合物:与上述相同
有没有人知道我做错了什么?
答案 0 :(得分:0)
英镑符号是这里的问题,将其替换为感叹号解决了问题。 工作表达:
$pattern = '!((http|ftp|https):\/\/)?([\w\-_]+(?:(?:\.[\w\-_]+)+))([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?!';
出于某种原因,这种方法很好,没有转义函数。