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

I am having problems grabbing some text using preg_replace() in php. I am just trying to remove all text that starts with a http|https|www up until the first whitespace character. I am currently using: (http|https|www)\S+ as my regex in preg_replace(). However I am getting this error when running the code: Warning: preg_replace(): Unknown modifier '\' I can use this same regex in a text editor, e.g. Sublime Text 2 with no problem. Any ideas why I am getting this error? Is there another way to grab the text I am looking for with a regex?

Thanks for any help.

You must delimit your regular expressions. This is usually a slash (/), but can also be a pair of parentheses. After the second delimiter can follow a number of delimiters (multi-line regex, ignore white-space, case-insensitive, etc.). \ is not a valid modifier, and thus, PHP complains.

Modify your regex as follows:

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

Why not use a ^ infront of your regexp:

/^(http|http|www)/

This matches only at the beginning of the string

Try this:

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

This one works : [ demo : http://regexr.com?30l4d ]

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

You have to be careful about how strings are escaped with php:

For instance, "\s" is an escaped s, and '\s' is a backash folowed by a s.

Also don't forget to add slashes at the begining and the end of your regexp. For example: '/myregexp.*/'