Намедни написал небольшую библиотеку для оптимизаторов и вебмастеров, которым приходится работать с разными 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