在我的网站上有一个用户可以输入网址的前端上传器。所以我创建了一个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 :(得分: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 :(得分:1)
为什么不创建像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>