Seite 1 von 1

Erweiterung capiStrCleanURLCharacters()

Verfasst: So 1. Mär 2009, 20:22
von Brazo Alkher
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);
}

Re: Erweiterung capiStrCleanURLCharacters()

Verfasst: Sa 7. Mär 2009, 11:43
von emergence
hmm...
es gibt an sich ne db tabelle -> chartable die einen grossteil normalisierter versionen dieser zeichen enthält...

ist vielleicht nützlich...

Re: Erweiterung capiStrCleanURLCharacters()

Verfasst: Mo 9. Mär 2009, 09:01
von Brazo Alkher
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.