如果出现两个相同的字符,请先删除它以及之前的所有内容

时间:2013-11-22 10:24:10

标签: php string wordpress str-replace substr

在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);

2 个答案:

答案 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;