web-dev-qa-db-ja.com

HTMLリンクを絶対的なものにする方法

私のWebサイトでは、ユーザーは自分のプロファイルにURLを入れることができます。

このURLはhttp://www.google.comまたはwww.google.comまたはgoogle.com

PHP code <a href="$url">$url</a>、リンクは常に絶対的ではありません。

aタグを絶対的にするにはどうすればよいですか?

23
Arnaud

URLの前に//を付けると、絶対URLとして扱われます。例えば:

<a href="//google.com">Google</a>

これは、ページが提供されているのと同じプロトコルを使用することに注意してください(たとえば、ページのURLがhttps://path/to/pageの場合、結果のURLはhttps://google.comになります)。

32

私は最近同様のことをしなければなりませんでした。

if (strpos($url, 'http') === false) {
    $url = 'http://' .$url;
}

基本的に、URLに「http」が含まれていない場合は、文字列(プレフィックス)の前に追加します。

または、RegExでこれを行うことができます

$http_pattern = "/^http[s]*:\/\/[\w]+/i";

if (!preg_match($http_pattern, $url, $match)){  
   $url = 'http://' .$url;
}  

間違いを指摘してくれた@JamesHiltonに感謝します。ありがとうございました!

6
StephanieQ

プロトコルを使用します。できればhttp://

<a href="http://www.google.com">Google</a>

この形式でURLを入力するか、追加されていない場合はhttp://を連結するようユーザーに依頼します。

5
sinhayash