2011-05-09 50 views
-3

我有一个脚本,将樱桃选择人们已经插入到内容的网址。过滤器链接文本有http

它意味着自动链接它们,但是当“http://”被省略时链接不会。什么是一个聪明的方式,使用

的代码可能是一条线,我可以添加回来(如果它不存在)LAMP

(strpos($edm['link'], 'http://')!==false)?$edm['link']:'http://'.$edm['link'] 是我试图

+0

这会更好,如果你[编辑](http://stackoverflow.com/posts/5933181/edit)到你的问题。 – alex 2011-05-09 06:27:11

+0

我在谈论你对你自己问题的评论。 – alex 2011-05-09 07:39:47

+0

@alex啊够公平的。那我当时就回答。 – Jason 2011-05-09 23:05:05

回答

7
$prefix = 'http://'; 

if (strpos($url, $prefix) !== 0) { 
    $url = $prefix . $url; 
} 

而且,你的榜样......

(strpos($edm['link'], 'http://')!==false) ? $edm['link'] : 'http://'.$edm['link']; 

...都将失败匹配的URL,如...

facebook.com/l.php?u=http://example.com 

...这将离开,因为......

facebook.com/l.php?u=http://example.com 

...这可能不是你想要的。 Ideone

然而,mine不存在这样的问题:)

+0

-1我已经有了脚本来挑选网址,这没问题 – Jason 2011-05-09 06:18:10

+6

@Jason好的,那么误解所需要的是一个downvote?我编辑了我的答案。 – alex 2011-05-09 06:22:40

+3

@Jason你倒下第一个人来回答你?这似乎合乎逻辑... – alex 2011-05-09 07:41:27

1

我最喜欢的方式:首先你删除的“http://”部分,以防它已经存在,然后追加也无妨。

edm['link'] = "http://" . preg_replace('#^http://#','',edm['link']); 

注意:这不适用于https,但它很容易做到。

+0

+1单线法 – Jason 2011-05-09 07:14:35

+2

容易吗?更改代码,使其接受http,https和ftp。 – zerkms 2011-05-09 08:03:09