Skip to content

Instantly share code, notes, and snippets.

@adactio
Last active October 3, 2022 06:26
Show Gist options
  • Star 15 You must be signed in to star a gist
  • Fork 5 You must be signed in to fork a gist
  • Save adactio/73f404568bf5e0d000a6 to your computer and use it in GitHub Desktop.
Save adactio/73f404568bf5e0d000a6 to your computer and use it in GitHub Desktop.
Make a chunk of markup AMP-ready
<?php
# Licensed under a CC0 1.0 Universal (CC0 1.0) Public Domain Dedication
# http://creativecommons.org/publicdomain/zero/1.0/
function ampify($html='') {
# Replace img, audio, and video elements with amp custom elements
$html = str_ireplace(
['<img','<video','/video>','<audio','/audio>'],
['<amp-img','<amp-video','/amp-video>','<amp-audio','/amp-audio>'],
$html
);
# Add closing tags to amp-img custom element
$html = preg_replace('/<amp-img(.*?)>/', '<amp-img$1></amp-img>',$html);
# Whitelist of HTML tags allowed by AMP
$html = strip_tags($html,'<h1><h2><h3><h4><h5><h6><a><p><ul><ol><li><blockquote><q><cite><ins><del><strong><em><code><pre><svg><table><thead><tbody><tfoot><th><tr><td><dl><dt><dd><article><section><header><footer><aside><figure><time><abbr><div><span><hr><small><br><amp-img><amp-audio><amp-video><amp-ad><amp-anim><amp-carousel><amp-fit-rext><amp-image-lightbox><amp-instagram><amp-lightbox><amp-twitter><amp-youtube>');
return $html;
}
?>
@rahulkhosla
Copy link

I Googled' it and found this for anyone wanting to use it for WordPress.

Nice job Adactio, seems like you got the credit too!

@Stefany93
Copy link

^^ Is there a node.js equivalent to this? I need it for my Gruntfile. Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment