Перед созданием новой темы, пожалуйста, ознакомьтесь с FAQ по LinkorCMS

UrlRender не доработанный

Супер пользователь
Сообщений: 125
Нужно делать проверку на наличие протокола, при отсутствии добавлять его
сделал так

<?
$url = stristr('://', $url) !== false ? $url : 'http://'.$url;
?>
но в стристр постоянно проблемы, то на локале, то на хосте. В данном слечает на серве где есть протокол возвращает фолс, и получается 2 протокола подряд...
Через эксплод пробовал, но пришел к тому, что это не грамотно...

Какие есть идеи ?

-- Изменено "Fort": 27.02.2016 03:01 --

так

<?
$url = stripos('://', $url) !== false ? $url : 'http://'.$url;
?>
тоже добавляет во всех случаях протокол
Разработчик
Сообщений: 605
Проверьте правильно ли устанавливается локаль. Всякие функции для работы с текстом, особенно когда начинаются интересные вопросы вроде регистра, зависят от нее. Примерно такая же история была с модулем поиска несколько месяцев назад.
Супер пользователь
Сообщений: 125
Мартин:
Проверьте правильно ли устанавливается локаль. Всякие функции для работы с текстом, особенно когда начинаются интересные вопросы вроде регистра, зависят от нее. Примерно такая же история была с модулем поиска несколько месяцев назад.

только что стало понятно, что это не верный подход. ссылка может содержать др. ссылку в открытом виде.
нужна регулярка с поиском только перед хостом или после 3-5 симв.
помогите ее накидать (перечисления не хочу делать ^(http://|https://|ftp://), нужна универсальная)

вот что то не понятное набросал.... ^.{2,5}(:\/\/) ....

-- Изменено "Fort": 27.02.2016 12:36 --
Супер пользователь
Сообщений: 125
в UrlRender

<?
// Если ссылка не имеет протокола (любой от 2 до 6 симв. с дво
еточием)<br />
    if(!preg_match('~^\S{2,6}:/?/?~', $url)){<br />
        $url =  'http://'.$url;<br />
    }
?>


<?
function Url($url){<br />
    $url = trim((string)$url);<br />
    return preg_replace('~^\S{2,6}:/?/?~', '', $url);<br />
}
?>


<?
function IsMainHost( $url ){<br />
    if(preg_match('/^'.preg_quote(Url($_SERVER['HTTP_HOST'])).'/', Url($url))){<br />
        return true;<br />
    }<br />
    return false;<br />
}
?>

какие есть комментарии ? вроде все со всех сторон протестил. IsMainHost думаю вполне корректно или так не стоит ?

-- Изменено "Fort": 29.02.2016 02:24 --

-- Изменено "Fort": 29.02.2016 02:41 --
Гости не могут отвечать на темы. Войдите или Зарегистрируйтесь.
Здесь присутствуют
(пользователей: 0, гостей: 1)
Быстрый переход: