web-dev-qa-db-ja.com

URLをエコーするときに「http://」を削除する方法?

'http://'(または 'https://')を付けずにドメイン名(url)をエコーし​​ようとしています。

私は以下を作成しました:

<?php $surl = bloginfo('url'); $findh = array( 'http://' ); $replace = ''; $outputh = str_replace( $findh, $replace, $surl ); echo $outputh; ?>

また、私が試したもう1つの(多くの)もの:

<?php $surl = bloginfo('url'); echo str_replace('http://', '', $surl); ?>

単純なタスクのように思えますが、ドメインがエコーされたときの出力にはまだ 'http://'が含まれます。ここや他のサイトへの他の投稿のレビューは役に立ちません。 Wordpressのベースファイル内の何かが干渉している可能性がありますが、これについてはよくわかりません。

ご意見をお寄せいただきありがとうございます。

1
Dan

bloginfo echosその結果、実際に値が返されていないので、これがあなたが "値を取得"してそれを操作しようとする試みが何も起こらない理由です。適切な値を取得したい場合は、代わりにget_bloginfoを使用してください。

3
Mark Kaplun

これにはcore PHP function parse_url(); を使うことができます。

例:

$url              = 'https://www.google.com/';
$url_data         = parse_url( $url );
$url_data['Host'] = explode( '.', $url_data['Host'] );
unset( $url_data['Host'][0] );

echo join( '.', $url_data['Host'] ); // outputs: google.com
1
Michael Ecklund

このコードを使用して、http://を削除します

$str = 'http://www.google.com';
$str = preg_replace('#^https?://#', '', $str);
echo $str;
0

これを試してみるとあなたを助けるかもしれない、

$link = get_permalink();
    $remove_http = '#^http(s)?://#';
    $remove_www  = '/^www\./';
    $replace     = '';
    $new_link    = preg_replace( $remove_http, $replace, $permalink );
    $new_link    = preg_replace( $remove_www, $replace, $new_link );
    echo '<p>' . $new_link . '</p>';
0
UltimateDevil