Reguläre Ausdrücke - Helm brennt schon
Ich habe mir echt schon den ganzen Schädel vebrannt uns sitze hier schon den ganzen Tag dran. Habe diverse Foren durchsucht, Tuts in meinen Schädel gebrannt aber mit den Regulären Ausdrucken stehe ich echt auf Kriegsfuss.
Kurz die Basics: Ich habe eine Datenbank mit einer Tabelle wo Begriffe bzw. Keywords mit Links hinterlegt sind.
z.b. Keyword=>Tutorials/ Link=>tutorials.de
usw..
Dann habe ich meinen ganz normalen HTML Quelltext in dem ich nun die gefundenen Begrifffe (aus der Datenbank) optisch mit (bold, underline, usw...) hervorheben und verlinken möchte.
Quellcode (Snap)
PHP (Snap)
Begriffe und Link kommen per Select aus der DB nach diesem Schema
Teilweise klappt das ersetzen, oder ehrlich gesagt klappt es doch nicht. :-(
Die Regs sollen so arbeiten das der Bereich <p class=irgenwas>***</p> und <h1>**</h1> nicht berücksichtigt werden, sondern nur <p class=nochwas>***</p>. Es kann aber auch vorkommen das in dem Tag <p class=nochwas>***</p> ein Link bereits vorhanden ist der den Begriff aus der DB enthält und auch bereits verlinkt ist. Dieser sollte dann nicht nochmal ersetzt werden, währe ja doppelt gemoppelt.
Daher nun meine bitte an dich oder an euch. Ich brauche da echt schnell Hilfe und bin auch bereit dafür was locker zu machen. Wer kann mir die Regs richtig aufbauen das es alles funktioniert. Ich habe nähmlich die Geduld schon verloren. Heute war so ein schöner Tag und ich wollte eigentlich mit meinem Sohn was machen. Aber daraus wurde nix. Ich bin derzeit auf dem Kriegspfad
Bitte kurze PM senden und dann klären wir den Rest. Bitte aber nur wer das wirklich drauf hat. OK
Ich habe mir echt schon den ganzen Schädel vebrannt uns sitze hier schon den ganzen Tag dran. Habe diverse Foren durchsucht, Tuts in meinen Schädel gebrannt aber mit den Regulären Ausdrucken stehe ich echt auf Kriegsfuss.
Kurz die Basics: Ich habe eine Datenbank mit einer Tabelle wo Begriffe bzw. Keywords mit Links hinterlegt sind.
z.b. Keyword=>Tutorials/ Link=>tutorials.de
usw..
Dann habe ich meinen ganz normalen HTML Quelltext in dem ich nun die gefundenen Begrifffe (aus der Datenbank) optisch mit (bold, underline, usw...) hervorheben und verlinken möchte.
Quellcode (Snap)
HTML:
<p class=irgenwas>Hier nun der Text gefolgt von einem Begriff der nun hervorgehoben werden soll . Aber es gibt auch einen Link <a href="#">hier</a> der kommt mal vor.</p>
<h1>Hier ein Titel</h1>
<p class=nochwas>Ein weitere Text der noch einen besseren Begriff hat, aber ohne Link.</p>
<h2>Dann noch einen weiteren Titel</h2>
PHP (Snap)
Begriffe und Link kommen per Select aus der DB nach diesem Schema
PHP:
//In $r liegt mein HTML-Code den ich voher (siehe oben) aus der DB geholt habe
$r .= $result->Html;
//Daten aus DB holen
$sql = "SELECT begriff, link FROM datenbank ORDER BY begriff";
$dbh = mysql_query($sql);
$a = '0';
while ($row = mysql_fetch_object($dbh)) {
$suchen[$a] = array ('suchen' => $row->begriff, 'ersetzen' => '<a href="http://'.$row->link.'" style="color: green; text-decoration:underline;">'.$row->begriff.'</a>');
$a++;
}
//Bis dahin auch keine Probleme nun aber kommen die Regs. :-)
//Jetzt Suchen u. ersetzen
for($i=0;$i<sizeof($suchen);$i++) {
$pattern = '/(<p [^>]*>)*'.$suchen[$i]['suchen'].'*([^<]*)(<\/p>)/';
$r = preg_replace($pattern, '$1'.$suchen[$i]['ersetzen'].'$2$3', $r, 3);
}
return $r;
Teilweise klappt das ersetzen, oder ehrlich gesagt klappt es doch nicht. :-(
Die Regs sollen so arbeiten das der Bereich <p class=irgenwas>***</p> und <h1>**</h1> nicht berücksichtigt werden, sondern nur <p class=nochwas>***</p>. Es kann aber auch vorkommen das in dem Tag <p class=nochwas>***</p> ein Link bereits vorhanden ist der den Begriff aus der DB enthält und auch bereits verlinkt ist. Dieser sollte dann nicht nochmal ersetzt werden, währe ja doppelt gemoppelt.
Daher nun meine bitte an dich oder an euch. Ich brauche da echt schnell Hilfe und bin auch bereit dafür was locker zu machen. Wer kann mir die Regs richtig aufbauen das es alles funktioniert. Ich habe nähmlich die Geduld schon verloren. Heute war so ein schöner Tag und ich wollte eigentlich mit meinem Sohn was machen. Aber daraus wurde nix. Ich bin derzeit auf dem Kriegspfad
Bitte kurze PM senden und dann klären wir den Rest. Bitte aber nur wer das wirklich drauf hat. OK
Zuletzt bearbeitet: