缺少时,将http://前缀添加到URL

时间:2018-05-03 08:16:31

标签: php

Hello Guys即时使用此功能可在缺少时将http://前缀添加到Url。问题是他将它添加到我已经http://已经在其他地方的其他地址。

foreach($result as $key => &$value)
    {

        if  (strpos($sample['Internetadress'], 'http://') === false){
            $sample['Internetadress'] = 'http://' .$sample['Internetadress'];
            }

    }
  1. 我希望他存在时不会编辑它。
  2. 我希望在没有网址时不添加它。
  3. 对不起我来自德国的英语:D

2 个答案:

答案 0 :(得分:1)

你的代码应该覆盖你的第一点(当http存在时不改变URL),如果没有提供你想要修改的样本网址。

对于第二点,你只需再做一次检查:

<?php
$sample['Internetadress']='www.example.com';

if  (strpos($sample['Internetadress'], 'http://') === false && trim($sample['Internetadress'])!==''){
    if(strpos($sample['Internetadress'], 'https://') === false){
        $sample['Internetadress'] = 'http://' .$sample['Internetadress'];
    }
}


echo $sample['Internetadress'];

答案 1 :(得分:0)

我认为在这种情况下,一个小正则表达式是一个很好的解决方案:

$urls = [
    'http://www.example.com',
    'foo.bar.com',
    'https://example.com',
    'www.example.com'
];

foreach ($urls as &$url) {
    $url = preg_replace('/^(?!http)/i', 'http://', $url);
}

循环后$urls中的值为:

[
    "http://www.example.com",
    "http://foo.bar.com",
    "https://example.com",
    "http://www.example.com"
]

除了使用foreach循环并通过引用传递值之外,您还可以使用SQLiteStudio这样的代码:

$urls = array_map(function($url) {
    return preg_replace('/^(?!http)/i', 'http://', $url);
}, $urls);