Небольшая PHP библиотека для SEO и не только

в 15:39, , рубрики: php, seo, uri, поисковая оптимизация, метки: , ,

Намедни написал небольшую библиотеку для оптимизаторов и вебмастеров, которым приходится работать с разными CMS на разных версиях PHP. Однако, и некоторые программисты тоже найдут ее полезной. Например, она в большинстве случаев способна определить текущий URI, который показывается пользователю, а не системный, который использует CMS. Например, Joomla при включении ЧПУ ведет себя странно. Библиотека совместима со всеми версиями PHP начиная от 4ой.
Также существует реализация рандома, который зависит только от URL и числа вызовов функции. тоесть не мигает при F5.

Несколько примеров

Выбор случайного элемента массива

<?php
    echo $Arr[seo_rand()%count($Arr)];
?>

Фильтр по URL
Допустим нам нужно сгенерировать какой-то блок для страниц урлы которых содержат /cat1/. Если мы сделаем это вот так:

<?php
      if(strpos($_SERVER['REQUEST_URI'],'/cat1/')!==false){
          //************
      }
?>

То наше решение не будет работать всегда. Например, на старых PHP такое решение не будет работать. Но главная причина в том, что многие CMS при включенном ЧПУ, подменяют $_SERVER['REQUEST_URI'], чтобы он был таким-же как и при отключенном ЧПУ.

Решение библиотеки в большинстве случаев исправляет это:

<?php
      if(seo_uri_have('/cat1/')){
          //************
      }
?>

Выбор ссылок из файла
Допустим у нас есть файл в котором в каждой строке ссылки. Нам нужно на каждой странице выбрать 5 случайных но чтобы они не мигали.

Без библиотеки

<?php
  $c=5;
  $sendlist = file("links.txt");
  //проверяем на пустую последнюю строку
  if(!$sendlist[count($sendlist)-1])
     unset($sendlist[count($sendlist)-1]);
  $Links=Array();
  if($c>count($sendlist))//чтобы зависание при числе ссылок в файле < 5 не висло
  {
    for($i = 0; $i<$c;$i++)
    {
      //считаем рандом основанный на URL страницы и номеру ссылки
      $n=abs(crc32($i.$_SERVER["REQUEST_URI"]))%count($sendlist);//не работает на 4.0.*
      $Link=trim($sendlist[$n]);
      if(!isset($Links[$Link]))// проверяем на дубль
           $Links[$Link]=$Link;
      else
           $c++;// Если дубль, то генерируем другой
    }
    else
        $Links=$sendlist;
  }
  echo join(', ',$Links);//выводим ссылки через запятую
?>

C библиотекой

<?php
    $Links=seo_full_split(file_get_contents("links.txt"));//открывает файл и разбиваем его на строки
    $Links=seo_rand_select($Links,5);//выбирает 5 условнослучайных строк
    echo join(', ',$Links);//выводим через запятую
?>

Можно даже запихнуть все в одну строку, но она слишком длинной получится

скачать: http://htracer.ru/seolib.rar
описание функций

Автор: Hkey

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js