抓取任何以 http 开头的字符串,直到 php 中的第一个空格字符


Grab any string starting with http up until first whitespace character in php

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

感谢您的任何帮助。

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

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

preg_replace('/(http|https|www)'S+/', …, …);

试试这个:

$string = preg_replace( '%(http|https|www).*?'s%', '', $string );

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

/^(http|http|www)/

这仅在字符串的开头匹配

这个工作: [ demo : http://regexr.com?30l4d ]

$newstring = preg_replace( "/((https?|www).*?)'s/", "", $string);

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

例如,"'s" 是一个转义的 s,''s' 是一个由 s 转义的背灰。

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