我在使用php中的preg_replace()抓取一些文本时遇到问题。我只是想删除所有以http | https | www开头的文本,直到第一个空白字符。我目前正在使用: (HTTP | HTTPS | WWW)\ S + 作为preg_replace()中的正则表达式。但是,我在运行代码时遇到此错误: 警告:preg_replace():未知的修饰符'\' 我可以在文本编辑器中使用相同的正则表达式,例如Sublime Text 2没有问题。任何想法为什么我收到此错误?是否有其他方法可以使用正则表达式获取我正在寻找的文本?
感谢您的帮助。
答案 0 :(得分:3)
您必须分隔正则表达式。这通常是斜杠(/
),但也可以是一对括号。在第二个分隔符之后可以跟随多个分隔符(多行正则表达式,忽略空格,不区分大小写等)。 \
不是有效的修饰符,因此,PHP会抱怨。
修改你的正则表达式如下:
preg_replace('/(http|https|www)\S+/', …, …);
答案 1 :(得分:1)
试试这个:
$string = preg_replace( '%(http|https|www).*?\s%', '', $string );
答案 2 :(得分:0)
为什么不在正则表达式前面使用^:
/^(http|http|www)/
仅匹配字符串
的开头答案 3 :(得分:0)
这个有效: [demo:http://regexr.com?30l4d]
$newstring = preg_replace( "/((https?|www).*?)\s/", "", $string);
答案 4 :(得分:0)
你必须小心如何使用php转义字符串:
例如,"\s"
是转义s,'\s'
是一个由s开头的背景。
另外,不要忘记在正则表达式的开头和结尾添加斜杠。例如:'/myregexp.*/'