当你想在一个网站上实现一个服务工作者时,你学到的第一件事就是该网站需要 SSL(一个 https
地址)。 自从我看到服务人员可以提供网站的惊人速度以来,我一直痴迷于为我的网站准备 SSL。 使用 SSL 强制执行 SSL .htaccess
很简单——困难的部分是更新博客内容中的资产链接。 一开始您会觉得正则表达式似乎是一种快速的治疗方法,但任何有正则表达式经验的人都知道使用 URL 是一场噩梦,而正则表达式可能是错误的决定。 正确的决定是 DOMDocument,这是一个原生 PHP 对象,它允许您以合乎逻辑的、愉快的方式使用 HTML。 首先将 HTML 加载到 DOMDocument 实例中,然后使用其可预测的函数来实现。
// Formats post content for SSLfunction format_post_content($content="") {
$document = new DOMDocument();
// Ensure UTF-8 is respected by using 'mb_convert_encoding'
$document->loadHTML(mb_convert_encoding($content, 'HTML-ENTITIES', 'UTF-8'));
$tags = $document->getElementsByTagName('img');
foreach ($tags as $tag) {
$tag->setAttribute('src',
str_replace('http://www.ggplus.cn',
'https://www.ggplus.cn',
$tag->getAttribute('src')
)
);
}
return $document->saveHTML();
}
在我上面的例子中,我发现所有 img
元素并将其协议替换为 https://
. 我最终会做同样的事情 iframe src
, a href
,以及其他一些很少使用的标签。 当我的修改完成后,我打电话给 saveHTML
获取新字符串。 不要陷入尝试在 HTML 中使用正则表达式的陷阱——您将面临失败的未来。 DOMDocument 是轻量级的,将使您的代码无限地更易于维护。