Erweiterung capiStrCleanURLCharacters()

Gesperrt
Brazo Alkher
Beiträge: 103
Registriert: Fr 28. Jan 2005, 15:15
Wohnort: Unna
Kontaktdaten:

Erweiterung capiStrCleanURLCharacters()

Beitrag von Brazo Alkher » So 1. Mär 2009, 20:22

um URL Namen etwas leserlicher zu machen schlage ich vor die Funktion capiStrCleanURLCharacters() zu erweitern.

In der Datei "includes/functions.api.string.php" ab Zeile 386 sollten noch folgende Zeilen eingefügt werden, um Umlaute URL "fähig" anzuzeigen:

Code: Alles auswählen

	# ISO-8859-1
	$sString = str_replace('ä', 'ae', $sString);
	$sString = str_replace('ö', 'oe', $sString);
	$sString = str_replace('ü', 'ue', $sString);
	$sString = str_replace('ß', 'ss', $sString);
	$sString = str_replace('Ä', 'Ae', $sString);
	$sString = str_replace('Ö', 'Oe', $sString);
	$sString = str_replace('Ü', 'Ue', $sString);

	# UTF-8
	$sString = str_replace(utf8_encode('ä'), 'ae', $sString);
	$sString = str_replace(utf8_encode('ö'), 'oe', $sString);
	$sString = str_replace(utf8_encode('ü'), 'ue', $sString);
	$sString = str_replace(utf8_encode('ß'), 'ss', $sString);
	$sString = str_replace(utf8_encode('Ä'), 'Ae', $sString);
	$sString = str_replace(utf8_encode('Ö'), 'Oe', $sString);
	$sString = str_replace(utf8_encode('Ü'), 'Ue', $sString);
Danach sieht die Funktion so aus:

Code: Alles auswählen

function capiStrCleanURLCharacters ($sString, $bReplace = false)
{
	$sString = capiStrReplaceDiacritics($sString);
	$sString = str_replace(" ", "-", $sString);
	$sString = str_replace("/", "-", $sString);
	$sString = str_replace("&", "-", $sString);
	$sString = str_replace("+", "-", $sString);

	# ISO-8859-1
	$sString = str_replace('ä', 'ae', $sString);
	$sString = str_replace('ö', 'oe', $sString);
	$sString = str_replace('ü', 'ue', $sString);
	$sString = str_replace('ß', 'ss', $sString);
	$sString = str_replace('Ä', 'Ae', $sString);
	$sString = str_replace('Ö', 'Oe', $sString);
	$sString = str_replace('Ü', 'Ue', $sString);

	# UTF-8
	$sString = str_replace(utf8_encode('ä'), 'ae', $sString);
	$sString = str_replace(utf8_encode('ö'), 'oe', $sString);
	$sString = str_replace(utf8_encode('ü'), 'ue', $sString);
	$sString = str_replace(utf8_encode('ß'), 'ss', $sString);
	$sString = str_replace(utf8_encode('Ä'), 'Ae', $sString);
	$sString = str_replace(utf8_encode('Ö'), 'Oe', $sString);
	$sString = str_replace(utf8_encode('Ü'), 'Ue', $sString);

	$iStrLen = strlen($sString);

	for ($i=0; $i < $iStrLen; $i++)
	{
		$sChar = substr($sString, $i, 1);

		if (preg_match('/^[a-z0-9]*$/i', $sChar) || $sChar ==  "-" || $sChar == "_" || $sChar == ".")
		{
			$sResultString .= $sChar;
		} else {
			if ($bReplace == true)
			{
				$sResultString .= "_";
			}
		}

	}

	return ($sResultString);
}

emergence
Beiträge: 10644
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Re: Erweiterung capiStrCleanURLCharacters()

Beitrag von emergence » Sa 7. Mär 2009, 11:43

hmm...
es gibt an sich ne db tabelle -> chartable die einen grossteil normalisierter versionen dieser zeichen enthält...

ist vielleicht nützlich...
*** make your own tools (wishlist :: thx)

Brazo Alkher
Beiträge: 103
Registriert: Fr 28. Jan 2005, 15:15
Wohnort: Unna
Kontaktdaten:

Re: Erweiterung capiStrCleanURLCharacters()

Beitrag von Brazo Alkher » Mo 9. Mär 2009, 09:01

guter Hinweis.

Wenn gewünscht kann ich ja mal die Funktion so erweitern, das sie an Hand des aktuellen Zeichensatzes alles Zeichen aus der Tabelle überprüft.
Nur müsste dann die Tabelle auch z.B. um utf-8 erweitert werden.

Gesperrt