Niekoľkokrát sa tu opakovala debata a nedostatkoch v prevode nadpisu článku na SEO link. Spravil som funkciu na ostránenie diakritiky pre UTF-8, odstraňuje všetko, čo v URL nemá čo hľadať, vrátane znakov celej znakovej sady utf-8 mimo CZ/SK:
function VratSEOLink($string = '') {
$string = strip_tags(trim($string));
$pole_co= array('ě','š','č','ř','ž','ť','ň','ď','ľ','ý','á','í','é','ú','ó','ů','ü','ö','ä','Ě','Š','Č','Ř','Ž','Ť','Ď','Ň','Ý','Á','Í','É','Ú','Ó','Ů','Ü','Ö','Ä','-','.');
$pole_cim=array('e','s','c','r','z','t','n','d','l','y','a','i','e','u','o','u','u','o','a','E','S','C','R','Z','T','D','N','Y','A','I','E','U','O','U','U','O','A',' ',' ');
$string=str_replace($pole_co, $pole_cim, $string); // odstraneni diakritiky + uprava nekterych spec. znaku
$string = strtolower($string);
$string = preg_match_all('/[a-zA-Z0-9]+/', $string, $nt);
return strtolower(implode('-', $nt[0]));
}
php script pre hromadnú úpravu SEO linkov:
<?php
#####################################################################
# #
# Generator SEO linkov pre phpRS 2.8.X #
# (c) 2008 Patrik JAN (pa3k) www.kvalitne.sk #
# GNU/GPL 2 #
# #
#####################################################################
define('IN_CODE',true);
include_once("config.php");
echo '
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">';
$sql = '
SELECT idc,
titulek
FROM '.$GLOBALS['rspredpona'].'clanky
;
';
$result = phprs_sql_query($sql, $GLOBALS['dbspojeni']);
if (!$result) {
echo 'SQL ERROR';
die;
}
while ($row = phprs_sql_fetch_assoc($result)) {
$articles[] = $row;
}
echo_flush ('Clanky boli spracovane...');
foreach ($articles as $article) {
$sql = '
UPDATE '.$GLOBALS['rspredpona'].'clanky
SET seo_link = "'.VratSEOLink($article['titulek']).'"
WHERE idc = '.(int)$article['idc'].'
;
';
$update = phprs_sql_query($sql, $GLOBALS['dbspojeni']);
if (!$update) {
echo_flush ('Error in generate SEOlink for article '.(int)$article['idc'].' SQL:'.$sql);
} else {
echo_flush ('seo_link for article '.(int)$article['idc'].' was successfully creaded');
}
}
echo_flush ('Done');
#####################################################################
function echo_flush($str) {
echo $str.'<br>';
flush();
ob_flush();
}
#####################################################################
function VratSEOLink($string = '') {
$string = strip_tags(trim($string));
$pole_co= array('ě','š','č','ř','ž','ť','ň','ď','ľ','ý','á','í','é','ú','ó','ů','ü','ö','ä','Ě','Š','Č','Ř','Ž','Ť','Ď','Ň','Ý','Á','Í','É','Ú','Ó','Ů','Ü','Ö','Ä','-','.');
$pole_cim=array('e','s','c','r','z','t','n','d','l','y','a','i','e','u','o','u','u','o','a','E','S','C','R','Z','T','D','N','Y','A','I','E','U','O','U','U','O','A',' ',' ');
$string=str_replace($pole_co, $pole_cim, $string); // odstraneni diakritiky + uprava nekterych spec. znaku
$string = strtolower($string);
$string = preg_match_all('/[a-zA-Z0-9]+/', $string, $nt);
return strtolower(implode('-', $nt[0]));
}
?>