Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

[PHP] Problem bei Umsetzung eines Lexikons

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
Neues Thema Antworten
Thies
PostRank 3
PostRank 3
Beiträge: 98
Registriert: 16.03.2006, 15:16
Wohnort: Stadtilm

Beitrag von Thies » 01.09.2006, 14:00

Hallo,

ich brauche mal Euren Rat, vielleicht hat jemand Vorschläge, wie ich meine Idee (besser) umsetzen kann.

Im Rahmen der Erweiterung eines CMS arbeite ich an der Integration eines Lexikons. Das klappt auch alles soweit ganz gut. Als eine Option will ich eine automatische Verlinkung der Texte zu anderen Einträge erreichen. Also wenn z.B. in einem Text das Wort Bildungssystem vorkommt und das Wort Bildungssystem ein Begriff des Lexikons ist, dann soll automatisch zum Begriff Bildungssystem verlinkt werden.

Das könnte man theoretsich erreichen, dass nach der Erfassung eines Eintrages der Text sofort geprüft wird. Hat aber den Nachteil, dass bisherige Einträge nicht geprüft werden, ob dort im Text der neue Eintrag auch vorkommt. Und on-the-fly nach der Erfassung eines Eintrages alle Einträge zu prüfen, dürfte den Server je nach Anzahl der Einträge ganz schön schaffen :D

Also will ich wie folgt umsetzen:

Einmal in der Nacht wird per CronJob das Lexikon deaktiviert und alle Einträge geprüft. Danach wird das Lexikon wieder aktiviert. Zur Umsetzung nutze ich einen BBCode [lex]...[/lex]

Das bekomme ich auch hin. Die Idee ist, alle [lex] und [/lex] eines Textes zu löschen und danach per str_replace die Begriffe durchlaufen zu lassen, z.B. per

Code: Alles auswählen

foreach ($words as $i) {
   str_replace("/($i)/", " [lex]$i[/lex] ", $string);
}
Damit werden alle Worte wie Bildungssystem in entsprechende Links wie https://www.domain.de/lex/Bildungssystem umgewandelt.

Worte wie Bildungssysteme werden davon aber nicht erfasst, also will ich das der Erfasser in solchen Fälle doch manuell einen BBCode erfassen kann:

[lex="Bildungssystem"]Bildungssysteme[/lex]

Bei der Löschroutine würde aber das schliessende [/lex] gelöscht werden. Und jetzt weiss ich nicht mehr, wie ich das sinnvoll umsetzen kann.

Hat jemand von Euch eine Idee oder einen besseren Umsetzungsvorschlag?

Danke im Voraus

Frank-Andre Thies

Anzeige von ABAKUS

von Anzeige von ABAKUS »


Hochwertiger Linkaufbau bei ABAKUS:
  • Google-konformer Linkaufbau
  • nachhaltiges Ranking
  • Linkbuilding Angebote zu fairen Preisen
  • internationale Backlinks
Wir bieten Beratung und Umsetzung.
Jetzt anfragen: 0511 / 300325-0

marc75
PostRank 9
PostRank 9
Beiträge: 1916
Registriert: 06.10.2004, 09:36

Beitrag von marc75 » 01.09.2006, 14:43

on the fly beim Aufruf des Beitrages, das heisst erst gar kein BBcode dafür extra einfügen. Sondern den Text vor der Ausgabe parsen und dann mit den Links zum lexikon ausgeben.

phiro
PostRank 3
PostRank 3
Beiträge: 71
Registriert: 02.12.2005, 22:03

Beitrag von phiro » 01.09.2006, 21:19

Hallo,

wie schon gesagt wurde kann das ganze on the fly erledigen, was allerdings bei sehr vielen Begriffen zu hoher Last führt.

Eine Alternative wäre zum Beispiel ein RegEx, der leichte Abweichungen in der Endsilbe verzeiht, zum Beispiel etwa so...

Code: Alles auswählen

$regex = '&#40;&#91; &#40;>&#93;&#41;&#40;'.$name.'&#91;a-z&#93;&#123;0,3&#125;&#41;&#40;&#91; &#41;<,\.&#93;&#41;';
der würde zum Beispiel auch nicht anschlagen, wenn direkt auf den Begriff eine öffnende eckige Klammer folgt...

Oder eben einen exakter arbeitenden RegEx wiezum Beispiel

Code: Alles auswählen

$regex = '&#40;&#91; &#40;>&#93;&#41;&#40;'.$name.'&#41;&#40;&#91; &#41;<,\.&#93;&#41;';
der trotzdem alles in BB Code verschont.

Gruß

Philipp

[/code]