使用str_replace分隔URL

时间:2014-03-20 23:47:45

标签: php wordpress str-replace

我有两个使用WordPress的网站:www.exemple.com(fr-FR)和ca.exemple.com/fr(fr-CA)

为避免在Google上出现重复内容,我必须动态更改此元素:

<link rel="alternate" hreflang="fr-CA" href="ca.exemple.com/fr/shop">

所以当我在header.php

上加入www.exemple.com/shop
<link rel="alternate" hreflang="fr-CA" href="<?php echo str_replace("//", "//ca.", get_site_url() . $_SERVER['REQUEST_URI']); ?>" />

它返回:

<link rel="alternate" hreflang="pl" href="ca.exemple.com/shop">

如何在/fr/.com之间添加/shop/

编辑:解决方案

我已经制作了一个特殊代码,用于验证代码是否存在于另一个页面上,因此我们没有任何404错误,这里是:

<?php
$alt_url = str_replace( "ca.exemple.com/fr/fr", "www.exemple.com" , get_site_url() . $_SERVER['REQUEST_URI']);
$currentz = str_replace( "ca.exemple.com/fr/fr" , "ca.exemple.com/fr" ,   get_site_url() . $_SERVER['REQUEST_URI']);
$file_headers = @get_headers($alt_url);
if($file_headers[0] == 'HTTP/1.1 404 Not Found') {

}
else {
echo "<link rel=\"alternate\" hreflang=\"fr-CA\" href=\"$currentz\" />";
echo "\n";
echo "<link rel=\"alternate\" hreflang=\"fr-FR\" href=\"$alt_url\" />";
}
?>

3 个答案:

答案 0 :(得分:0)

试试这个

$url = 'http://www.example.com/shop';

$path = parse_url($url, PHP_URL_PATH);


echo str_replace($path,'/fr'.$path, $url); // http://example.com/fr/shop

答案 1 :(得分:0)

只需添加串联中的字符串

即可
<?php echo str_replace("//", 
          "//ca.", get_site_url() .'/fr'. $_SERVER['REQUEST_URI']); 

我可能不会这样做。但那是快速的答案。

没有必要在整个字符串上运行str_replace。

 echo str_replace('//'.'//ca.',get_site_url()).'/fr'/. $_SERVER['REQUEST_URI'];

此外,还有parsing urls

的功能

答案 2 :(得分:0)

您可以在现有字符串替换后添加另一个字符串替换。 例如:

 <?php
       $url = str_replace("//", "//ca.", "http://www.yahoo.com/shop");
       $url = str_replace(".com", ".com/fr", $url);
       echo $url;
    ?>

会导致:

http://ca.www.yahoo.com/fr/shop