如何用PHP函数更改部分URL?

时间:2016-05-10 14:02:18

标签: php wordpress wordpress-plugin

这是情景:

  1. 我正在使用Wordpress
  2. 我使用的插件从在线卖家处提取产品并将其显示在我的网站上。
  3. 我的网站使用SSL,源网站同时包含SSL和非SSL
  4. 图片来源可以是:

    http://somewebsite.com/folder/someimage.jpg

    OR

    https://securewebsite.com/folder/someimage.jpg

  5. 我想在我的Wordpress主题(或插件本身)中使用一个函数,它将在显示网页之前更改部分图像URL。

  6. 更改图片网址的第一部分:

    *** http://somewebsite.com/folder/***someimage.jpg

    并将其替换为

    *** https://securewebsite.com/folder/***someimage.jpg

    我是php和wordpress的绝对noobie,我在这里向所有Guru学习。如果答案可以详细说明,那就太棒了。

    问题在于解决Google Chrome的“混合内容”警告。

    我确实在某处(在某个论坛上)看到了这段代码,所以我想这样的东西也适用于我的网站。

    function rewrite_image_for_https(&$image_url) {
      // Determine if site is being accessed by HTTPS
      $secure = ((!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') || $_SERVER['SERVER_PORT'] == 443) ? TRUE : FALSE;
      if ($secure) {
        // Strip off protocol, and change protocol and domain to point at HTTPS image
        $url = str_replace('http://insecureimagecource', '', $image_url);
        $url = explode('/', $url);
        $url[0] = 'https://secureimagesource';
        $url = implode('/', $url);
        $image_url = $url;
      }
    }
    

    我也尝试了以下,没有任何作用:-(请帮忙

    <?php
    
    function rewrite_image_for_https () {
    
    $url = preg_replace("/^http://insecureimages", "https://secureimages", $url);
    
    }
    
    ?>
    

    也试过这个......

    <?php
    
    str_replace('http://insecureimages.com', 'https://secureimages.com', $url);
    
    ?>
    

1 个答案:

答案 0 :(得分:0)

有多种方法可以解决这个问题,例如:

str_replace

str_replace('http://somewebsite.com', 'https://securewebsite.com', $url);

parse_url

$parts = parse_url($url);
$secure = 'https://securewebsite.com'.$parts['path'];