Проверка наличия 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; ?>
Author: Brad Werth, 2011-12-21

3 answers

parse_url() может помочь...

$parsed = parse_url($urlStr);
if (empty($parsed['scheme'])) {
    $urlStr = 'http://' . ltrim($urlStr, '/');
}
 55
Author: DaveRandom, 2013-06-12 11:51:40

Вы можете проверить, находится ли http:// в начале строки, используя strpos().

$var = 'www.somesite.com';

if(strpos($var, 'http://') !== 0) {
  return 'http://' . $var;
} else {
  return $var;
}

Таким образом, если у него нет http:// в самом начале var, он вернет http:// перед ним. В противном случае он просто вернет $var сам.

 8
Author: Tyil, 2011-12-21 14:54:45
echo (strncasecmp('http://', $url, 7) && strncasecmp('https://', $url, 8) ? 'http://' : '') . $url;

Помните, что strncmp() возвращает 0, когда первые буквы n равны, что здесь равно false. Это может немного сбить с толку.

 1
Author: KingCrunch, 2011-12-21 14:54:49