PHP如果字符串包含URL隔离它

时间:2010-06-06 18:52:53

标签: php url string

在PHP中,我需要能够确定字符串是否包含URL。如果有URL,我需要将其隔离为另一个单独的字符串。

例如:“SESAC showin the Love!http://twitpic.com/1uk7fi

我需要能够将该字符串中的URL隔离为新字符串。同时,URL需要在原始字符串中保持不变。遵循?

我知道这可能很简单,但这让我很难过。

4 个答案:

答案 0 :(得分:8)

这样的东西
preg_match('/[a-zA-Z]+:\/\/[0-9a-zA-Z;.\/?:@=_#&%~,+$]+/', $string, $matches);

$matches[0]将保留结果。

(注意:此正则表达式肯定不符合RFC;它可能会获取格式不正确的(按规范)URL。请参阅http://www.faqs.org/rfcs/rfc1738.html)。

答案 1 :(得分:2)

这不是破折号 - 。需要添加 -

preg_match('/[a-zA-Z]+:\/\/[0-9a-zA-Z;.\/\-?:@=_#&%~,+$]+/', $_POST['string'], $matches);

答案 2 :(得分:0)

网址不能包含空格,所以......

\b(?:https?|ftp)://\S+

应匹配字符串中任何类似URL的内容。

以上是纯正的正则表达式。在您使用之前,PHP preg_ * 字符串转义规则适用。

答案 3 :(得分:-1)

$test = "SESAC showin the Love! http://twitpic.com/1uk7fi";
$myURL= strstr ($test, "http");
echo $myURL; // prints http://twitpic.com/1uk7fi