Enhance SEO function to improve string sanitization and formatting

This commit is contained in:
2025-05-18 10:00:58 +02:00
parent 7a631f407f
commit 4fdd906b81

View File

@@ -997,28 +997,51 @@ class S
fclose( $fp );
}
public static function seo( $val, $delete_rhombs = false )
public static function seo($val, $delete_rhombs = false)
{
$val = preg_replace( '/\xc2\xa0/', ' ', $val );
// Zamiana niełamiącej spacji na zwykłą
$val = preg_replace('/\xc2\xa0/', ' ', $val);
$array_rep1 = array( '*', '_', ' ', '+', '"', "'", '?', '-', ',', '!', '~', '<', '>', '@', '#', '$', '%', '^', '&', '*' . '(', ')' . '-', '=', '\\', '|', '[', ']', ':', '(', ')', '', '•', '' );
$array_rep2 = array( '-', '-', '-', '-', '', '', '', '-', '-', '', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '' );
// Podstawowe zamiany znaków specjalnych
$array_rep1 = array(
'*', '_', ' ', '+', '"', "'", '?', '-', ',', '!', '~', '<', '>', '@', '#',
'$', '%', '^', '&', '*', '(', ')', '-', '=', '\\', '|', '[', ']', ':', '(', ')',
'', '•', ''
);
$array_rep2 = array(
'-', '-', '-', '-', '', '', '', '-', '-', '', '-', '-', '-', '-', '-', '-',
'-', '-', '-', '-', '-', '', '-', '-', '-', '-', '-', '-', '-', '-', '-', '', ''
);
$val = \front\factory\Globelus::noPl( $val );
$val = str_replace( $array_rep1, $array_rep2, $val );
// Usuwanie polskich znaków
$val = \front\factory\Globelus::noPl($val);
if ( $delete_rhombs )
$val = str_replace( '/', '', $val );
// Zamiana popularnych znaków na myślniki lub pusty ciąg
$val = str_replace($array_rep1, $array_rep2, $val);
$val = strtolower( $val );
$val = preg_replace( '/(-){2,}/', '-', $val );
// Opcjonalne usunięcie ukośników
if ($delete_rhombs) {
$val = str_replace('/', '', $val);
}
$val = ltrim( $val, '-' );
$val = rtrim( $val, '-' );
// Usunięcie wszystkich znaków poza literami, cyframi i myślnikami
// (np. emotki, inne znaki Unicode, itd.)
$val = preg_replace('/[^a-zA-Z0-9\-]/u', '', $val);
return $val;
// Konwersja na małe litery
$val = strtolower($val);
// Redukcja wielokrotnych myślników do jednego
$val = preg_replace('/(-){2,}/', '-', $val);
// Usunięcie myślników z początku i końca
$val = ltrim($val, '-');
$val = rtrim($val, '-');
return $val;
}
public static function noPL( $val )
{
$table = array(