22. Februar 200520 j 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....
22. Februar 200520 j Sind in den Abkürzungen auch Zeichen enthalten, die vom RegEx interpretiert werden? Gibt es spezielle Ankürzungen, wo das auftritt?
23. Februar 200520 j 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
3. März 200520 j 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
12. März 200520 j 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
30. September 200519 j 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
30. September 200519 j 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));
30. September 200519 j 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
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.