Есть два способа решения этой проблемы: разбор URL и регулярные выражения.
Некоторые скажут, что разбор URL-адресов правильный , но регулярные выражения в этом случае работают также хорошо. Мне нравится иметь возможность иметь простые однострочные символы для таких вещей, особенно потому, что это часто встречается в файлах шаблонов, где вам может понадобиться однострочный внутри выражения echo для поддержания читабельности.
Регулярные выражения
Мы можем сделать это за один вызов функции с помощью preg_replace .
preg_replace('/^(?!https?:\/\/)/', 'http://', $aProfileInfo['Website'])
Используется negative lookahead
в начале строки, которая ищет http://
или https://
. Если оба найдены, замена не происходит. Если они не найдены , он заменяет начало строки (0 символов) на http://
, по существу добавляя его к строке без ее изменения.
В контексте:
<a href="'. preg_replace('/^(?!https?:\/\/)/', 'http://', $aProfileInfo['Website']).'" target="_self">
<div class="callButton">Website</div>
</a>
Парсинг URL
(parse_url($aProfileInfo['Website'], PHP_URL_SCHEME) ? '' : 'http://') . $aProfileInfo['Website']
Что это делает, выяснить, присутствует ли схема по ссылке через parse_url($aProfileInfo['Website'], PHP_URL_SCHEME)
. Затем, используя троичный оператор, он либо выдаст ''
, если он был найден, либо 'http://'
, если он не был найден. Затем он добавляет ссылку на это.
В контексте:
<a href="'.((parse_url($aProfileInfo['Website'], PHP_URL_SCHEME) ? '' : 'http://') . $aProfileInfo['Website']).'" target="_self">
<div class="callButton">Website</div>
</a>