Артём Мáлков

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

23 июн5 комм

Атрибут «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 или же он пустой, после чего добавляет его, а в качестве содержимого использует название самого изображения.

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

Рекомендуем к просмотру
Lazy Load 2.0 – ленивая (отложенная) загрузка изображений на JavaScript
Модули и скрипты
Как создать ссылку на скачивание файла в HTML?
Статьи и советы
Как получить URL-адреса всех изображений в переменной на PHP?
Статьи и советы
5
комментариев
Форма комментирования этого поста скрыта. Авторизуйтесь, чтобы расширить привилегии гостевого посещения и получить необходимую помощь от сообщества Pandoge.
    • 1
    2
      •  Пользователь
    27 окт в 06:32

    А можно сделать так чтобы после удаление кода скрипта, теги оставались ?

      • 1
      1067
        •  Команда Pandoge
      27 окт в 11:22

      Ozzy Osborn, первое что идёт на ум (если у вас сайт с базой данных и вся информация хранится там) - это, скорее всего также с помощью скрипта, внести правки в базу данных.

      • 1
      2
        •  Пользователь
      27 окт в 14:16

      Артём Мáлков, Да, база данных есть. Но понятия не имею как работать с MySql.

      • 1
      1067
        •  Команда Pandoge
      27 окт в 18:27

      Ozzy Osborn, на чём сделан сайт?

    • 1
    1067
      •  Команда Pandoge
    23 июн в 02:24

    Статья обновлена.

    Полностью изменена логика работы скрипта.

Подняться наверх
«Pandoge» - помощник вебмастера