Справочники, инструменты, документация

PHP: Автоматическое заполнение alt изображениям

Атрибут «alt» у изображений позволяет передать пользователю некоторую информацию о нем до того момента, пока изображение полностью не загрузилось или оно вовсе отсутствует. Большинство сеошников при оптимизации сайтов стараются избавиться от пустых альтов. Эти же рекомендации и дает всем известный валидатор HTML-разметки.

Когда на сайте большое количество пустых альтов, прописывать их руками – долгая и кропотливая работа. Но ее можно автоматизировать, и сегодня я покажу вам, как. В главный файл вашего сайта (CMS), а чаще всего это файл index.php, в самый верх вставьте скрипт:

function fill_alt($buffer) {
    preg_match_all("/<img (.*?)\/>/", $buffer, $images);

    if(!is_null($images)) {
        foreach($images[1] as $index => $value) {
            if(!preg_match("/alt=/", $value)) { // Если у изображения нет alt
                preg_match("/src=\"(.*?)\"/", $images[0][$index], $matches);
                $image_name = basename($matches[1]); 
                $image_name = preg_replace("/\.[^.]+$/", "", $image_name); // Имя изображения без расширения
                $buffer = str_replace($images[0][$index], str_replace("<img", '<img alt="'.$image_name.'"', $images[0][$index]), $buffer);

            } elseif (preg_match("/alt=\"\"/", $value)) { // Если у изображения есть alt, но он пустой
                preg_match("/src=\"(.*?)\"/", $images[0][$index], $matches);

                $image_name = basename($matches[1]); 
                $image_name = preg_replace("/\.[^.]+$/", "", $image_name); // Имя изображения без расширения
                $buffer = str_replace($images[0][$index], str_replace(array("<img", "alt=\"\""), array('<img alt="'.$image_name.'"', ""), $images[0][$index]), $buffer);

            }
        }
    }
    return $buffer;
}

ob_start("fill_alt");

После этого поставленная задача должна благополучно решиться. Что делает этот скрипт? Он ищет все изображения на странице, у которой отсутствует тег alt или же он пустой, после чего добавляет его, а в качестве содержимого использует название самого изображения.

Вполне удобно. По желанию скрипт можно переделать под определенную переменную в вашем скрипте.