2015-09-28 157 views
1

這應該是基本的知識,但不知何故,它逃避了我。它一直在努力罰款到目前爲止,但由於某些原因,我的代碼不再增加HTTP協議...如何將http protocoll添加到鏈接?

我有$model->www其中包含www.some-page.no(純文本)。

到現在爲止我已經輸出這個如下:

<a href="<?= $model->www; ?>> Click me </a> 

預期的輸出應該是http://www.some-page.no
但現在我得到http://my-local-machine.com/page/a/http://www.some-page.no

如果我做<a href="http://<?= $model->www; ?>> Click me </a>它工作正常。問題是我不知道該網址是否已經包含http://

如果鏈接沒有它,是否有Yii方式或PHP方式添加http protocoll?或者我必須自定義一個函數來檢查字符串http://

鏈接已經過正確的消毒。所以不需要htmlspecialchars或類似的功能。

+1

假設這是Yii 1,你很可能使用['createAbsoluteUrl'](http://www.yiiframework.com/doc/ap i/1.1/CController#createAbsoluteUrl-detail) –

+0

沒有工作。 'Yii :: app() - > createAbsoluteUrl($ model-> www)'給了我'http:// localhost.no/www.some-page.no' – Steven

回答

3

您可以parse_url

$url = 'www.google.be'; 
if (parse_url($url, PHP_URL_SCHEME) === null) $url = 'http://'.$url; 
0

這樣做只是使用str_replace

<a href="http://<?php str_replace('http://', '', $model->www); ?>" Click me</a> 

UPDATE:如果你也關心其他協議(見DarkBee的評論):

<a href="http://<?php str_replace(array('http://', 'https://', 'ftp://'), '', $model->www); ?>" Click me</a> 
+0

那麼'https' – DarkBee

+0

https怎麼樣?這個問題只會詢問http。 – Stefan