2017-10-31 5 views
0

サイトにユーザーがURLを入力できるフロントエンドのアップローダがあります。そこでIF文を作成して、URL(クリック可能)を入力するかどうかを示し、そうでない場合は表示しません。今私はhttpまたはhttpswwwが存在する場合(https // www.link.com> link.comを達成しようとしていますが)どこに置くべきか分からないようにしようとしています。私はstr_replace関数を使用すると仮定します。IF文内のHTTP/HTTPS/WWWを外す

<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> 

洞察力は大変ありがとうございます!

答えて

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

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>