当您想要在网站上实施 Service Worker 时,您首先要了解的事情之一是该网站需要 SSL(一个
https
地址)。自从我看到服务人员可以提供令人眼花缭乱的速度的网站后,我就一直着迷于为 SSL 准备好我的网站。使用
强制执行 SSL.htaccess
很简单——困难的部分是更新博客内容中的资产链接。一开始,您觉得正则表达式似乎是速效药,但任何有使用正则表达式经验的人都知道使用 URL 是一场噩梦,而正则表达式可能是错误的决定。正确的决定是
DOM文档
,一个本地 PHP 对象,允许您以合乎逻辑、愉快的方式使用 HTML。您首先将 HTML 加载到 DOMDocument 实例中,然后使用其可预测的功能来实现。
// Formats post content for SSL function 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://davidwalsh.name', 'https://davidwalsh.name', $tag->getAttribute('src') ) ); } return $document->saveHTML(); }
在我上面的例子中,我找到了所有
img
元素并将其协议替换为
https://
.我最终会用
做同样的事情iframe 源代码
,
一个 href
和其他一些很少使用的标签。修改完成后,我调用
保存HTML
来获取新的字符串。不要陷入尝试将正则表达式与 HTML 结合使用的陷阱——您将面临失败。 DOMDocument 是轻量级的,将使您的代码更易于维护。