Nach langen hin und her überlegen bin ich nun zu dieser Lösung gekommen:
ich
lege in dem Array die Länge des Wortes mit Fest.
PHP-Code:
$wert[$a][0] = $ds->w_begriff;
$wert[$a][1] = strlen($wert[$a][0]);
dann Zerlege und Sortiere ich nach der Länge. Der Längste String nach vorne
PHP-Code:
foreach ($wert as $nr => $inhalt)
{
$wort[$nr] = strtolower( $inhalt[0] );
$anzahl[$nr] = strtolower( $inhalt[1] );
}
array_multisort($anzahl, SORT_DESC, $wert);
Dann mache ich die Schleife für die Verlinkungen
PHP-Code:
foreach($wert as $werte)
{
$text = str_replace($werte[0], "<a href='wissenswertes.php#".$werte[0]."'>".$werte[0]."</a>", $text);
$text = str_replace("<a name='<a href='wissenswertes.php#".$werte[0]."'>".$werte[0]."</a>'></a>", "<a name='".$werte[0]."'></a>", $text);
$text = str_replace("<a href='wissenswertes.php#".$werte[0]."'>".$werte[0]."</a>'", "'", $text);
$text = str_replace($werte[0], umwandeln($werte[0],0), $text);
}
in der Folge wandele ich die benutzen Worte wieder um
PHP-Code:
foreach($wert as $werte)
{
$text = str_replace(umwandeln($werte[0]), $werte[0], $text);
}
Die Function umwandeln()
PHP-Code:
function umwandeln($eingabe)
{
$eingabe = str_replace("a", "%", $eingabe);
$eingabe = str_replace("A", "_", $eingabe);
$eingabe = str_replace("e", "|", $eingabe);
$eingabe = str_replace("E", "#", $eingabe);
$eingabe = str_replace("i", "}", $eingabe);
$eingabe = str_replace("I", "{", $eingabe);
$eingabe = str_replace("o", "§", $eingabe);
$eingabe = str_replace("O", "~", $eingabe);
$eingabe = str_replace("u", "]", $eingabe);
$eingabe = str_replace("U", "[", $eingabe);
return $eingabe;
}
Nun Wird Aventurin-Quarz nicht doppelt gelinkt
Anregungen zu Verkürzung/Verbesserung des Scripts?