Проверка наличия url-адреса http:// в начале и вставка, если нет [дубликат]
На этот вопрос уже есть ответ здесь:
В настоящее время я редактирую тему WordPress с пользовательскими выводами полей.
Я успешно внес все изменения, и все работает так, как должно.
Моя проблема заключается в том, что если URL-адрес отправлен в пользовательское поле, эхо - это именно то, что там было, так что если кто-то войдет www.somesite.com эхо - это именно то, что и добавляет его в конец домена: www.mysite.com www.somesite.com .
Я хочу проверить, имеет ли предоставленная ссылка префикс http://
в начале, если у нее есть, то сделайте это, но если нет, повторите http://
перед URL-адресом.
Надеюсь, я объяснил свою проблему как можно лучше.
$custom = get_post_meta($post->ID, 'custom_field', true);
<?php if ( get_post_meta($post->ID, 'custom_field', true) ) : ?>
<a href="<?php echo $custom ?>"> <img src="<?php echo bloginfo('template_url');?>/lib/images/social/image.png"/></a>
<?php endif; ?>
3 answers
parse_url()
может помочь...
$parsed = parse_url($urlStr);
if (empty($parsed['scheme'])) {
$urlStr = 'http://' . ltrim($urlStr, '/');
}
Вы можете проверить, находится ли http://
в начале строки, используя strpos().
$var = 'www.somesite.com';
if(strpos($var, 'http://') !== 0) {
return 'http://' . $var;
} else {
return $var;
}
Таким образом, если у него нет http://
в самом начале var, он вернет http://
перед ним. В противном случае он просто вернет $var
сам.
echo (strncasecmp('http://', $url, 7) && strncasecmp('https://', $url, 8) ? 'http://' : '') . $url;
Помните, что strncmp()
возвращает 0
, когда первые буквы n
равны, что здесь равно false
. Это может немного сбить с толку.