HTML Meta Tags Automator

Script di automazione di inserimento di meta tag HTML all'interno di pagine contenenti un placeholder predefinito.
PHP, JSON - 2018

JSON Config file

Un estratto del file di configurazione che contiene le pagine di cui aggiungere i metatag definiti.

                
                {
                    "page1_to_replace": {
                        "meta": {
                            "keywords": "...",
                            "description": "...",
                            "twitter:image": "...",
                            "twitter:title": "...",
                            "twitter:description": "...",
                            "twitter:card": "...",
                            "og:image": "...",
                            "og:site_name": "...",
                            "og:url": "...",
                            "og:description": "...",
                            "og:title": "...",
                            "og:type": "...",
                            "og:locale": "..."
                        },
                        "title": "..."
                    },
                    ...
                }
                
                

PHP Function

La funzione php mostra come leggere il file JSON di configurazione, effettuare un backup del file originale e poi rimpiazzarlo con i valori aggiornati.

                
                function work($json_config_file)
                {
                    if (!file_exists($json_config_file)) return;
                    $meta_info = json_decode(file_get_contents($json_config_file), true);

                    foreach($meta_info as $page => $meta_tags)
                    {
                        //skip if page does not exists...
                        if (!file_exists($page)) continue;

                        //backup page
                        copy($page, $page.".old");

                        //load all page into a string for working...
                        $str_page = file_get_contents($page);
                        
                        //remove the <title> tag. Will be added what is defined in the json item
                        $title_start_idx = strpos($str_page, "<title>");
                        $title_end_idx = strpos($str_page, "</title>");
                        if ($title_start_idx !== false && $title_end_idx !== false)
                        {
                            $str_page = substr_replace($str_page, "", $title_start_idx, $title_end_idx-$title_start_idx+8);
                        }
                        
                        //build a string with the title and the meta tags defined in the json item
                        $str_meta_tags = "\t".'<title>'.$meta_tags['title'].'</title>'."\r\n";
                        foreach ($meta_tags['meta'] as $key => $value)
                        {
                            $str_meta_tags .= "\t".'<meta name="'.$key.'" content="'.$value.'">'."\r\n";
                        }

                        //replace the placeholder with the actual meta tags
                        $str_page = str_replace("", $str_meta_tags, $str_page);
                        
                        //save file
                        file_put_contents($page, $str_page);
                    }
                }