在PHP中,我需要能够确定字符串是否包含URL。如果有URL,我需要将其隔离为另一个单独的字符串。
例如:“SESAC showin the Love!http://twitpic.com/1uk7fi”
我需要能够将该字符串中的URL隔离为新字符串。同时,URL需要在原始字符串中保持不变。遵循?
我知道这可能很简单,但这让我很难过。
答案 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