2011-05-09 77 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