Begriffe automatisch verlinken

Tomas1967

Mitglied
Hallo,

ich habe ein Lexikon gebastelt und nun habe ich ein kleines Problem.

Nehmen wir mal an dort wird der Begriff "ActiveX" erklärt.

ActiveX ist der Titel.

Nun könnte der Begriff ja auch in den Beschreibungen von anderen Begriffserklärungen stehen.

Wie kann ich dem Script nun beibringen, dass dieser Begriff in der Beschreibung dann automatisch mit der Url zur ActiveX-Erklärung verlinkt wird?

Das hört sich kompliziert an - ist es bestimmt auch *gg*
 
Moin,

das ist wahrscheinlich einfacher als du denkst, du kannst das pspw. mit regulären Ausdrücken lösen...[phpf]preg_replace[/phpf]

Wie einfach es wird, hängt z.T. davon ab, wie die URLs der jeweiligen Beschreibungen aussehen.
 
Am effizientesten ist es die Begriffe manuell zu markieren. Denn anderenfalls müsstest du bei jedem neuen Artikel sämtliche bereits existierenden Artikel durchlaufen und darin das neue Schlagwort markieren. Auch wäre so nur möglich, das Schlagwort in der Form, wie es im Titel vorkommen, zu markieren. Also auch keine Pluralformen, zusammengesetzte Substantive, etc.
 
Moin,

das ist wahrscheinlich einfacher als du denkst, du kannst das pspw. mit regulären Ausdrücken lösen...[phpf]preg_replace[/phpf]

Wie einfach es wird, hängt z.T. davon ab, wie die URLs der jeweiligen Beschreibungen aussehen.

Ja für jemanden der sich damit auskennt ist es bestimmt leichter.

Die Begriffe werden so aufgerufen -

http://www.MeineDomain.de/view-id1.html

Und wie soll das nun funktionieren? Alle Titel aus der Datenbank holen und diese in den Beschreibungen suchen und dann mit preg_replace arbeiten? Hast du vielleicht ein Beispiel für mich?
 
Hey,

ja du musst den Titel aus der Datenbank holen. Du bekommst ja dann einen String nehme ich an der durch Leerzeichen getrennt ist.

PHP:
$cache_title = $title.split(" ", $title)
for each($cache_title as $ti){
   $search = "/".$ti."/";
   $replace = "<span class='boldf'>".$ti."</span>";
   $content = preg_replace($search , $replace, $content);
}

mfg
 
@pamax

Und das macht jetzt was? Sorry das ich frage - aber so beflügelt bin ich noch nicht.

Ich hole mir also die Titel aus der Datenbank und baue diesen Codeblock dort mit ein.

Und wie prüfe ich die Beschreibungen auf das Vorkommen von Begriffen? Ich schnalle mal wieder gar nichts *gg*
 
Ok, ich kommentier mal den Code für dich.

PHP:
//hier wird der titel aus der Datenbank gespalten
$cache_title = $title.split(" ", $title)
//hier wird für jedes Wort die Schleife durchgegangen
for each($cache_title as $ti){
   //das ist das Sucmuster Wort (z.B. AktivX)
   $search = "/".$ti."/";
   //mit diesem string wird das Wort dann ersetzt
   $replace = "<a href="http://www.deiendomain./".$ti.">".$ti."</a>";
   //hier wird die Aktion durchgeführt, die Variable $content wird heir geparst
   $content = preg_replace($search , $replace, $content);
}

mfg
 
Da muss aber ein Fehler im Code sein - Seite lässt sich nicht mehr aufrufen, sobald ich diesen einfüge.

Parse error: syntax error, unexpected T_FOR

Zeile - for each($cache_title as $ti) {

Danke schonmal dafür.
 
Zuletzt bearbeitet:
"for each" ist in PHP "foreach" . Ich habe den Code nicht getestet.. aber rein theoretisch müsste es so gehen..
PHP:
//hier wird der titel aus der Datenbank gespalten
$cache_title = $title.split(" ", $title)
//hier wird für jedes Wort die Schleife durchgegangen
foreach($cache_title as $ti){
   //das ist das Sucmuster Wort (z.B. AktivX)
   $search = "/".$ti."/";
   //mit diesem string wird das Wort dann ersetzt
   $replace = "<a href="http://www.deiendomain./".$ti.">".$ti."</a>";
   //hier wird die Aktion durchgeführt, die Variable $content wird heir geparst
   $content = preg_replace($search , $replace, $content);
}
 
Neee - das geht nicht.

Nun kommt: Warning: Invalid argument supplied for foreach() in

Zeile: foreach($cache_title as $ti){
 
Zurück