Hallo zusammen,
folgenden Code nutze ich, um Datenbankinhalte in ein Array einzulesen, anschließend vorhandenen Content und Datenbankinhalte mittels preg_match auf Übereinstimmung zu untersuchen. Bei Übereinstimmung gibt's ein preg_replace.
Dantenbank-Inhalte (Lexikon)
1. ID ($g_id)
2. Wort ($g_word)
3. Bedeutung/Erläuterung
Bei den Fundstellen in $inhalt sollen Begriffe sowohl in Einzahl als auch Mehrzahl berücksichtigt werden, wobei in der Datenbank aus Platzgründen natürlich nur ein Begriff von beiden stehen soll - günstigstenfalls nur in der Einzahl.
Bsp also.:
DB Inhalt: Krone
Funstelle: Krone oder Kronen.
preg_match soll individuell ersetzen
<a href='glossar.php....>Krone</a> ODER <a href='glossar.php....>Kronen</a>
Die Fundstellen werden bei den Patterns in $suche_str zwar wie gewollt berücksichtigt, jedoch wird die Fundstelle derzeit logischerweise durch preg_replace mit dem Link per DB Inhalt ($g_word) ersetzt.
Nun meine Frage: Wie kann ich es erreichen, dass abhängig vom Fund der Link wie oben in Einzahl oder Mehrzahl erzeugt wird? Bestimmt muss da noch an den Patterns gefeilt werden und im Link die Var $g_word gegen $inhalt ausgetauscht werden. Davor muss die Var $inhalt aber nochmal durch ein $preg_match oder $preg_replace gejagt werden, hmn?
Hab mich im diversen Foren durchgeforstet aber leider keine eindeutigen Infos gefunden. In Sachen Patterns befinde ich mich auch noch auf relativem Neuland,
Bitte daher um eure Unterstützung.
Herzlichen Dank im Voraus und Grüßle
Andreas
EDIT: Backslashes werden im Code (Patterns) nicht angezeigt, sind aber vorhanden.
folgenden Code nutze ich, um Datenbankinhalte in ein Array einzulesen, anschließend vorhandenen Content und Datenbankinhalte mittels preg_match auf Übereinstimmung zu untersuchen. Bei Übereinstimmung gibt's ein preg_replace.
Dantenbank-Inhalte (Lexikon)
1. ID ($g_id)
2. Wort ($g_word)
3. Bedeutung/Erläuterung
PHP-Code:
$inhalt = "<zu durchsuchender Original-Content>";
while(datenbank [g_word, g_id] auslesen und in array packen)
{
$suche_str = "/\b".$g_word."(en|n)\b/i\n";
$ersetze_str = "<a href='glossar.php?id=$g_id'>$g_word</a>";
if (preg_match($suche_str, $inhalt))
{
$inhalt = preg_replace($suche_str, $ersetze_str, $inhalt);
}
}
Bsp also.:
DB Inhalt: Krone
Funstelle: Krone oder Kronen.
preg_match soll individuell ersetzen
<a href='glossar.php....>Krone</a> ODER <a href='glossar.php....>Kronen</a>
Die Fundstellen werden bei den Patterns in $suche_str zwar wie gewollt berücksichtigt, jedoch wird die Fundstelle derzeit logischerweise durch preg_replace mit dem Link per DB Inhalt ($g_word) ersetzt.
Nun meine Frage: Wie kann ich es erreichen, dass abhängig vom Fund der Link wie oben in Einzahl oder Mehrzahl erzeugt wird? Bestimmt muss da noch an den Patterns gefeilt werden und im Link die Var $g_word gegen $inhalt ausgetauscht werden. Davor muss die Var $inhalt aber nochmal durch ein $preg_match oder $preg_replace gejagt werden, hmn?
Hab mich im diversen Foren durchgeforstet aber leider keine eindeutigen Infos gefunden. In Sachen Patterns befinde ich mich auch noch auf relativem Neuland,
Bitte daher um eure Unterstützung.
Herzlichen Dank im Voraus und Grüßle
Andreas
EDIT: Backslashes werden im Code (Patterns) nicht angezeigt, sind aber vorhanden.
Kommentar