Zum Inhalt springen

Empfohlene Beiträge

Geschrieben
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....

Geschrieben

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

  • 2 Wochen später...
Geschrieben

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

  • 6 Monate später...
Geschrieben

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

Geschrieben

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));

Geschrieben

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

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...