Automatyczne dodawanie lub usuwanie http

13 lutego 2019
Dodawanie usuwanie http blog thumbnail

Nowy dzień, nowe problemy. Jeden z klientów pomimo faktu, że miał w podpowiedzi instrukcję, że powinien uzupełnić linki używając pełnej deklaracji czyli zaczynając od http:// lub https://, postanowił stanowczo ją zignorować. Powstał w ten sposób problem przy wyświetlaniu linków na stronie. Jedne działały a drugie nie. Co gorsza nie było reguły, który z nich ma http a który nie. Ręczna edycja linków na poprawne nie wchodziła w grę. Trzeba było coś dopisać. Dla potomności zostawiam zatem skrypt na blogu:

function add_http($url) {
    if (!preg_match("~^(?:f|ht)tps?://~i", $url)) {
        $url = "http://" . $url;
    }
    return $url;
}

A w js mamy taką przydatną funkcję, gdyby obróbka zmiennej w php była zbyt czasochłonna.

function formatUrl(url)
{
    var httpString = "http://";
    var httpsString = "https://";
    if (url.substr(0, httpString.length).toLowerCase() !== httpString && url.substr(0, httpsString.length).toLowerCase() !== httpsString)
                url = httpString + url;
    return url;
}

Przy okazji załatwiliśmy jeszcze jedną rzecz aby klient nie musiał osobno podawać anhor tekstu a był pobierany z linka z jednoczesnym usunięciem http lub https

function remove_http($url) {
    $disallowed = array('http://', 'https://');
    foreach($disallowed as $d) {
        if(strpos($url, $d) === 0) {
            return str_replace($d, '', $url);
        }
    }
    return $url;
}

A finalnie w kodzie wygląda to tak:

 <?php if($website_address = get_field('company__website')) : ?>
                        <li class="web--list">
                            <?php
                            if($website_icon = get_field('website__icon', 'options')) {
                                echo $website_icon;
                            }
                            echo '<a href="' . add_http($website_address) . '" target="_blank" rel="nofollow">' .
                                 remove_http($website_address) .
                                '</a>';
                            ?>
                        </li>
                    <?php endif; ?>
Our portfolio image 1
Our portfolio image 2
Our portfolio image 3
Portfolio rocket icon

Nasze portfolio

Zobacz jakie fajne projekty udało
nam się już zrealizować.

zobacz