在Wordpress中,我建立了缩短网址的短代码。现在,如果url是子域,则存在问题,例如:http://cdn.livestream.com/embed/channel
,通过短代码函数我得到:
<a href="http://cdn.livestream.com/embed/channel" target="_blank">cdn.livestream.com</a>
正如您所看到的那样cdn.livestream.com
,我只希望它是livestream.com
。我不是这方面的专家,我知道我需要一个能够做到这一点的功能:“如果在一个字符串中出现两个完整停止,请先删除它,然后先删除所有内容,我猜。”我正在使用这个功能:
function url( $atts, $content = null ) {
$cnt = substr($content, 0, strpos($content, '/', strpos($content, '/')+2));
$cnt = str_replace('http://www.', '', $cnt);
$cnt = str_replace('http://', '', $cnt);
$cnt = str_replace('www.', '', $cnt);
$cnt = str_replace('embed.', '', $cnt);
$cnt = str_replace('player.', '', $cnt);
$cnt = str_replace('//', '', $cnt);
$cnt = str_replace('feature=player_embedded&', '', $cnt);
return '<div id="url"><a href="/external/?link='.$content.'" target="_blank">'.$cnt.'</a></div>';
}
add_shortcode("url", "url");
我认为可以改变很大一部分:
$cnt = str_replace('http://www.', '', $cnt);
$cnt = str_replace('http://', '', $cnt);
$cnt = str_replace('www.', '', $cnt);
$cnt = str_replace('embed.', '', $cnt);
$cnt = str_replace('player.', '', $cnt);
$cnt = str_replace('//', '', $cnt);
答案 0 :(得分:2)
如何使用parse_url($url);
$cnt = 'http://cdn.livestream.com/embed/channel';
print_r(parse_url($cnt));
echo parse_url($cnt, PHP_URL_PATH);
输出
Array
(
[scheme] => http
[host] => cdn.livestream.com
[path] => /embed/channel
)
然后使用数组的主机部分。
echo str_replace('cdn.','',$cnt['host']);
希望有些有用! :)
玛蒂
答案 1 :(得分:0)
您可以使用爆炸功能,
$str = "http://cdn.ecospace.com"
$explode = explode("//", $str);
$nextExplode = explode (".", $explode[1]);
$finalStr = "";
if (count($nextExplode)>2) {
$finalStr = $explode[0]."//".$nextExplode[1].".".$nextExplode[2];
} else {
$finalStr = $str;
}
echo $finalStr;