繁体   English   中英

php 字符串将 http 替换为 https(带 www 或不带)

[英]php string replace http to https (with www or not)

我有一个这样的字符串:

$url = '<p>IMAGE 1:</p><img src="http://example.com/image1.jpg"><br><p>IMAGE 2:</p><img src="http://www.example.com/image2.jpg"><br><p>IMAGE 3:</p><img src="http://externalsite.com/image3.jpg"><br><p>IMAGE 4:</p><img src="http://www.externalsite.com/image4.jpg">'

example.com 是我的 webapp 所在的域。

我需要:

  1. 检查 example.com 是 http 还是 https
  2. 如果是 https,请将字符串中的所有http://example.comhttp://www.example.com替换为: https : //www.example.com (因此不包括其他域,如 externalsite.com)

对于第一点,我可以使用: $isHttps = !empty($_SERVER['HTTPS']) ? true : false; $isHttps = !empty($_SERVER['HTTPS']) ? true : false;

对于第二点,我不确定如何正确创建 preg_replace

我认为这就是你想要的逻辑。 我们可以搜索以下正则表达式模式:

http://(?:www\.)?example\.com

这将匹配http://example.comhttp://www.example.com 然后,我们可以将这些 URL 替换为https版本。

$url = '<p>IMAGE 1:</p><img src="http://example.com/image1.jpg"><br><p>IMAGE 2:</p><img src="http://www.example.com/image2.jpg"><br><p>IMAGE 3:</p><img src="http://externalsite.com/image3.jpg"><br><p>IMAGE 4:</p><img src="http://www.externalsite.com/image4.jpg">';
$output = preg_replace("/http:\/\/(?:www\.)?example\.com/", "https://www.example.com", $url);
echo $output;

这打印:

<p>IMAGE 1:</p><img src="https://www.example.com/image1.jpg"><br><p>IMAGE 2:</p><img src="https://www.example.com/image2.jpg"><br><p>IMAGE 3:</p><img src="http://externalsite.com/image3.jpg"><br><p>IMAGE 4:</p><img src="http://www.externalsite.com/image4.jpg">

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM