kills Geschrieben 22. Februar 2005 Autor Geschrieben 22. Februar 2005 probier mal lieber: $search = '@(<.+?>)(.+?)(z.B.)(.+?)(</.+?>)*@'; $replace = '$1$2<span class="shortcut">$3</span>$4$5'; [/PHP] hm das passt leider auch nicht. Der zerhaut mir die ganze seite.... Zitieren
etreu Geschrieben 22. Februar 2005 Geschrieben 22. Februar 2005 Sind in den Abkürzungen auch Zeichen enthalten, die vom RegEx interpretiert werden? Gibt es spezielle Ankürzungen, wo das auftritt? Zitieren
kills Geschrieben 23. Februar 2005 Autor Geschrieben 23. Februar 2005 Hi Enrico, danke für die Mühe!!! hier die aktuellen Abkürzungen liste: Abkürzung Beschreibung Accessibility Bezeichnung für gute Bedienbarkeit BITV Verordnung zur barrierefreien Informationstechnik Browser Medium um Internetseiten darzustellen bzw. beziehungsweise Ca. Cirka CD Comact Disk Chat Kommunikation via Internet Code Sprache, hier Programmiersprache Computer Computer Containern Aufbewahrungsbehälter Cowboy Kuhhirte, überwiegend zu Pferde unterwegs d.h. das heisst DeltaTalker ein Computer, der Texte vorliest Dr. Doktor Dragonball ein Spiel auf dem Computer e.V. eingetragener Verein Email elektronische Post Explorer Auswahlfenster FC Fussball Club ggf. gegebenenfalls Graves Eigenname Guinness Eintrag von Weltrekorden ha. Hektar Hobbys Freizeitgestaltung Homepage Internetseite JavaScript Programmiersprache KFZ Kraftfahrzeug km Kilometer Layout Darstellung Lessons Schulstunden Links Adressen von Internetseiten Louis-seize aus der Zeit von Louis, König aus Frankreich, der einen speziellen Stil darstellt Mac Eigenname von Macenthosh MSD Mobile Sonderpädagogische Dienst Newsletter Rundbrief von Neuigkeiten Outdoor Draussen im Freien PC Personal Computer Playstation Soielestation Public Öffentlichkeit Recycling Wiedereinführung in einen Kreislauf Regie Anleitung relauncht Erneuerung, Modernisierung hier im speziellen einen Internetauftritt Return Zurück zum letzten Punkt Sa. Samstag Screenreadern Bildschirmlesegerät So. Sonntag St. Sankt Std. Stunde Stylesheets Datei um die Stileigenschaft einer Internetseite darzustellen SVE Schulvorbereitende Einreichtung Team Gemeinschaft Tel. Telefon Textbrowsern Medium um textbasierte Seiten im Internet darzustellen Training Übung u.a. unter anderem usw. und so weiter VW Volkswagen Web Abkürzung aus dem englischen für Internet Website Internetseite Wide weite Windows Fenster World Welt z.B. zum Beispiel Zitieren
kills Geschrieben 23. Februar 2005 Autor Geschrieben 23. Februar 2005 hm muss ich die "." durch "\." ersetzen? ich glaub schon ... ich versuchs ma Zitieren
kills Geschrieben 3. März 2005 Autor Geschrieben 3. März 2005 aufgrund eines Tipps von Jaraz in einem anderen Thread bin ich auf folgendes gestoßen: http://www.php-faq.de/q/q-regexp-ersetzen.html damit bekomm ich es jetzt hoffentlich hin Zitieren
kills Geschrieben 12. März 2005 Autor Geschrieben 12. März 2005 Hallo zusammen, ich habe jetzt auf Grundlage des vorhergehenden Links folgendes gebaut: <?php function glossar_replace( $string) { global $REX; $mypage = "glossar"; // only for this file $I18N_GLOSSAR = new i18n($REX[LANG],$REX[INCLUDE_PATH]."/addons/$mypage/lang/"); // CREATE LANG OBJ FOR THIS ADDON $sql = new sql; $sql->setQuery("select * from rex__glossar order by shortcut"); for($i=0;$i<$sql->getRows();$i++) { $language = $sql->getValue("language"); if ( $language == "0") { $language = $I18N_GLOSSAR->msg('lang_de_short'); } elseif ( $language == "1") { $language = $I18N_GLOSSAR->msg('lang_en_short'); } else { $language = $I18N_GLOSSAR->msg('lang_fr_short'); } $id = $sql->getValue("short_id"); $shortcut = htmlentities($sql->getValue("shortcut")); $escapedshortcut = str_replace( '.', '\.', $shortcut); $description = htmlentities($sql->getValue("description")); $language = trim( $language); $casesense = $sql->getValue("casesense"); $search = "/((<[^>]*)|$escapedshortcut)/ie"; $replace = '"\2"=="\1"? "\1":"<span lang=\"'. $language .'\" xml:lang=\"'. $language .'\" title=\"'. $language .': '. $description .'\" class=\"shortcut\">'. $shortcut .'</span>"'; $subject = $string; if ( $casesense == 0) { $search .= 'i'; } $string = preg_replace( $search, $replace, $subject); $sql->counter++; } return $string; } ?> [/PHP] Das ist jetzt zu 99% was ich haben wollte. Das einzige was mich noch stört ist, dass wenn er z.b. nach "Mac" sucht, dieses auch in "Macht" findet. Heisst er soll nur nach dem kompletten wort suchen, nicht nach teilstrings... Bsp: http://www.sokba.de/relaunch/index.php?article_id=57 hat jemand eine Idee? Gruß, Markus Zitieren
kills Geschrieben 30. September 2005 Autor Geschrieben 30. September 2005 Hallo zusammen, neues RegEx Problem,... folgendes Script: <?php ob_start(); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html> <head></head> <body> <ul> <li><a href='index.php?a=b'>test1</a></li> <li><a href="index.php?b=a">test1</a></li> <li><a href='index.php?a=b'>test2</a></li> <li><a href="index.php?b=a">test2</a></li> </ul> </body> </html> <?php $content = ob_get_contents(); ob_end_clean(); echo do_regex( $content, 'test1', 'de', 'thats it!'); function do_regex( $subject, $shortcut, $language, $description, $casesense = false) { $escapedshortcut = str_replace('.', '\.', $shortcut); $search = "/((<[^>]*)|$escapedshortcut)/e"; $replace = '"\2"=="\1"? "\1":"<abbr lang=\"'.$language.'\" title=\"'.$language.', '.$description.'\">'.$shortcut.'</abbr>"'; if ($casesense) { $search .= 'i'; } return preg_replace($search, $replace, $subject); } ?> [/PHP] Resultat [code]<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html> <head></head> <body> <ul> <li><a href=\'index.php?a=b\'><abbr lang="de" title="de, thats it!">test1</abbr></a></li> <li><a href="index.php?b=a"><abbr lang="de" title="de, thats it!">test1</abbr></a></li> <li><a href=\'index.php?a=b\'>test2</a></li> <li><a href="index.php?b=a">test2</a></li> </ul> </body> </html>[/code] Woher kommen die \' im Source? Wie muss ich den RegEx umbauen, damit das nicht passiert? Danke und Gruß, Markus Zitieren
DevilDawn Geschrieben 30. September 2005 Geschrieben 30. September 2005 Woher kommen die \' im Source? Wie muss ich den RegEx umbauen, damit das nicht passiert? Das liegt am /e RE Modifier data in a backreference with /e is run through addslashes() before being inserted in your replacement expression. Wie wärs mit return stripslashes(preg_replace($search, $replace, $subject)); Zitieren
kills Geschrieben 30. September 2005 Autor Geschrieben 30. September 2005 Hi DevilDawn, Wie wärs mit return stripslashes(preg_replace($search, $replace, $subject)); Danke für den Hinweis. Ich hab das getestet und funktioniert auch prächtig . Nur ist mir dabei ein wenig mulmig, da ich diese Funktion in einer Schleife, pro Seitenaufruf, 500-1500 durchlaufen werden muss. Gibt es keine Möglichkeit das addslashes anders zu verhindern, oder zu umgehen? Vielleicht mit einem anderen RegEx? Muss ich evtl noch andere Zeichen abfangen? $escapedshortcut = str_replace('.', '\.', $shortcut); [/PHP] Danke und Gruß, Markus Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.