Обрезать HTTP / HTTPS / WWW внутри оператора IF

На моем сайте есть пользовательский загрузчик, чтобы пользователи могли вводить URL. Поэтому я создал оператор IF, чтобы показать, вводят ли они URL (кликабельный), и ничего, если они этого не делают. Теперь я пытаюсь раздеть http или же https, а также www если он существует (пытается добиться https // www.link.com> link.com), но не знаю, куда его поместить. Предполагая, что я использую str_replace функция.

<a href="<?php

if ( get_post_meta($post->ID, 'user_submit_url',true) ) {

echo get_post_meta($post->ID, 'user_submit_url',true);

} else {}?>" target="_blank">

<?php

if ( get_post_meta($post->ID, 'user_submit_url',true) ) {

echo get_post_meta($post->ID, 'user_submit_url',true);

} else {}?></a>

Любое понимание очень ценится!

0

Решение

Почему бы не создать такую ​​функцию, как get_user_submit_url сделать ваш код чище.

function get_user_submit_url(){
if ( get_post_meta($post->ID, 'user_submit_url',true) ) {
$user_url = get_post_meta($post->ID, 'user_submit_url',true);
// Strip domain here
// Not sure if you only need full path URL or only domain, so I only get the domain
$user_domain = preg_replace('#^www\.(.+\.)#i', '$1', $parse_url($user_url)['host']);
}
return $user_domain;
}

Итак, ваш HTML будет:

<a href="<?php echo get_user_submit_url(); ?>" target="_blank">
<?php echo get_user_submit_url(); ?>
</a>
1

Другие решения

Возможно, не лучшее решение, но вы могли бы использовать preg_replace определить шаблон, который соответствует http и www.

var_dump(preg_replace("#https?:\/\/(www)?\.?#i","","https://www.test.de"));

что-то вроде этого. Другим решением является работа с parse_url что-то вроде этого:

var_dump(parse_url("https://www.test.de", PHP_URL_HOST));

но тогда вы должны удалить www потому что это часть хозяина.

1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector