2

我在 php 中使用 preg_replace() 获取一些文本时遇到问题。我只是想删除所有以 http|https|www 开头的文本,直到第一个空格字符。我目前正在使用: (http|https|www)\S+ 作为 preg_replace() 中的正则表达式。但是,在运行代码时出现此错误: 警告:preg_replace(): Unknown modifier '\' 我可以在文本编辑器中使用相同的正则表达式,例如 Sublime Text 2 没有问题。任何想法为什么我会收到此错误?是否有另一种方法可以使用正则表达式获取我正在寻找的文本?

谢谢你的帮助。

4

5 回答 5

3

您必须分隔正则表达式。这通常是一个斜杠 ( /),但也可以是一对括号。在第二个分隔符之后可以跟多个分隔符(多行正则表达式、忽略空格、不区分大小写等)。\不是有效的修饰符,因此 PHP 会抱怨。

如下修改您的正则表达式:

preg_replace('/(http|https|www)\S+/', …, …);
于 2012-04-14T21:03:26.687 回答
1

试试这个:

$string = preg_replace( '%(http|https|www).*?\s%', '', $string );
于 2012-04-14T21:05:53.340 回答
0

为什么不在正则表达式前面使用 ^:

/^(http|http|www)/

这仅在字符串的开头匹配

于 2012-04-14T21:03:30.030 回答
0

这个有效: [演示:http ://regexr.com?30l4d ]

$newstring = preg_replace( "/((https?|www).*?)\s/", "", $string);
于 2012-04-14T21:10:21.113 回答
0

你必须小心字符串是如何用 php 转义的:

例如,"\s"是一个转义的 s,并且'\s'是一个后跟一个 s 的反斜线。

也不要忘记在正则表达式的开头和结尾添加斜杠。例如:'/myregexp.*/'

于 2012-04-14T21:10:35.933 回答