<?php # ersetzungen aus http://de.wikipedia.org/w/index.php?title=Benutzer:Codeispoetry/Kosmetika&oldid=54087955 # originalhinweis: #textseite: nur auf textseiten, keine diskussionsseiten, keine scripte, keine pre-abschnitte. #seite: kann überall gefahrlos gemacht werden #automatisch: ohne nachkontrolle #semiautomatisch: könnte noch kontrolle benötigen function ersetze_kleinigkeiten($page, $content, $erzwinge_textseite=false){ $content = intern_ersetze_kleinigkeiten($content); if($erzwinge_textseite || ist_textseite($page)){ $content = hole_pre_tags($content); $content = intern_ersetze_kleinigkeiten_textseite($content); $content = setze_pre_tags($content); } return $content; } function ersetze_kleinigkeiten_semiautomatisch($page, $content, $erzwinge_textseite=false){ $content = intern_ersetze_kleinigkeiten($content); $content = intern_ersetze_kleinigkeiten_semiautomatisch($content); if($erzwinge_textseite || ist_textseite($page)){ $content = hole_pre_tags($content); $content = intern_ersetze_kleinigkeiten_textseite($content); $content = intern_ersetze_kleinigkeiten_semiautomatisch_textseite($content); $content = setze_pre_tags($content); } return $content; } function intern_ersetze_kleinigkeiten($content){ #Leerzeichen am Ende erledigen; die Chemiker wollen in Vorlagen das Leerzeichen bei leeren Parametern behalten #RE: /([^=])[ \t]+\n/g #KO: '$1\n' #QA: seite, automatisch $content = preg_replace('!([^=])[ \t]+\n!', "$1\n", $content); #viele leerzeilen ersetzen #RE: /\n{3,}/g #KO: '\n\n' #QA: seite, automatisch $content = preg_replace('!\n{3,}!', "\n\n", $content); return $content; } function intern_ersetze_kleinigkeiten_textseite($content){ #Mehrere Leerzeichen durch eins ersetzen #RE: /([^\n ]) +([^= ]|=+\n)/g #KO: '$1 $2' #QA: textseite, automatisch $content = preg_replace('!([^\n ]) +([^= ]|=+\n)!', '$1 $2', $content); #<p> ersetzen #RE: /\<\/?\s*[Pp]\s*\>/g #KO: '\n\n' #QA: textseite, automatisch $content = preg_replace('/\<\/?\s*[Pp]\s*\>/', "\n\n", $content); // nicht getestet #diversen toolbar-müll beseitigen #RE: /\'\'\'Fetter\sText\'\'\'/g #KO: '' #QA: textseite, automatisch $content = preg_replace('/\'\'\'Fetter\sText\'\'\'/', '', $content); #RE: /\'\'Kursiver\sText\'\'/g #KO: '' #QA: textseite, automatisch $content = preg_replace('/\'\'Kursiver\sText\'\'/', '', $content); #RE: /\[\[Link\-Text\]\]/g #KO: '' #QA: textseite, automatisch $content = preg_replace('/\[\[Link\-Text\]\]/', '', $content); #RE: /\[\[Verweistext\]\]/g #KO: '' #QA: textseite, automatisch $content = preg_replace('/\[\[Verweistext\]\]/', '', $content); #RE: /\[http\:\/\/www\.example\.com\sLink\-Text\]/g #KO: '' #QA: textseite, automatisch $content = preg_replace('/\[http\:\/\/www\.example\.com\sLink\-Text\]/', '', $content); #RE: /\=\=\sÜberschrift\s\=\=/g #KO: '' #QA: textseite, automatisch $content = preg_replace('/\=\=\sÜberschrift\s\=\=/', '', $content); #RE: /\[\[Datei\:Beispiel\.jpg\]\]/g #KO: '' #QA: textseite, automatisch $content = preg_replace('/\[\[Datei\:Beispiel\.jpg\]\]/', '', $content); #RE: /\[\[Media\:Beispiel\.ogg\]\]/g #KO: '' #QA: textseite, automatisch $content = preg_replace('/\[\[Media\:Beispiel\.ogg\]\]/', '', $content); #RE: /\<math\>Formel\shier\seinfügen\<\/math\>/g #KO: '' #QA: textseite, automatisch $content = preg_replace('/\<math\>Formel\shier\seinfügen\<\/math\>/', '', $content); #RE: /Formel\shier\seinfügen/g #KO: '' #QA: textseite, automatisch $content = preg_replace('/Formel\shier\seinfügen/', '', $content); #RE: /\<nowiki\>Unformatierten\sText\shier\seinfügen\<\/nowiki\>/g #KO: '' #QA: textseite, automatisch $content = preg_replace('/\<nowiki\>Unformatierten\sText\shier\seinfügen\<\/nowiki\>/', '', $content); #RE: /Unformatierten\sText\shier\seinfügen/g #KO: '' #QA: textseite, automatisch $content = preg_replace('/Unformatierten\sText\shier\seinfügen/', '', $content); #Unnötiges Angeben des Vorlage-Namensraums #RE: /\{\{\s*vorlage\s*:\s*/gi #KO: '{{' #QA: textseite, automatisch $content = preg_replace('/\{\{\s*vorlage\s*:\s*/i', '{{', $content); //englisch auch $content = preg_replace('/\{\{\s*template\s*:\s*/i', '{{', $content); #Leere Style-Angaben #RE: /style\s*=\s*\"\s*\"\s*/g #KO: '' #QA: textseite, automatisch $content = preg_replace('/style\s*=\s*\"\s*\"\s*/', '', $content); //nicht getestet #Diverse falsche Formen eines Zeilenumbruchs #RE: /<\s*\/?\s*br\s*\/?\s*>/gi #KO: '<br />' #QA: textseite, automatisch $content = preg_replace('/<\s*\/?\s*br\s*\/?\s*>/i', '<br />', $content); //nicht getestet #Häufige unschöne Kategorisierungen #RE: /\[\[\s*(category|kategorie)\s*:\s*/gi #KO: '[[Kategorie:' #QA: textseite, automatisch $content = preg_replace('/\[\[\s*(category|kategorie)\s*:\s*/i', '[[Kategorie:', $content); //nicht getestet #Dito für Bilder #RE: /\[\[\s*(image|bild|file|datei)\s*:\s*/gi #KO: '[[Datei:' #QA: textseite, automatisch $content = preg_replace('/\[\[\s*(image|bild|file|datei)\s*:\s*/i', '[[Datei:', $content); //nicht getestet #Dito für DEFAULTSORT #RE: /\{\{\s*defaultsort\s*:\s*/gi #KO: '{{DEFAULTSORT:' #QA: textseite, automatisch $content = preg_replace('/\{\{\s*defaultsort\s*:\s*/i', '{{DEFAULTSORT:', $content); //nicht getestet #Überschriften (Das [^ \t\n] ist nötig, um leerzeichen hinten loszuwerden #RE: /(={2,})[ \t]*([^\n]*[^ \t\n]):?[ \t]*\1/g #KO: '$1 $2 $1' #QA: textseite, automatisch $content = preg_replace('/(={2,})[ \t]*([^\n]*[^ \t\n]):?[ \t]*\1/', '$1 $2 $1', $content); # Komma vor Gestorben-Zeichen und Leerzeichen vor und danach, nur in Klammerausdrücken #RE: /(\([^\(\)]*)[,;]\s*†\s*([^\(\)]*\))/g #KO: '$1; † $2' #QA: textseite, automatisch $content = preg_replace('/(\([^\(\)]*)[,;]\s*†\s*([^\(\)]*\))/', '$1; † $2', $content); # Leerzeichen nach * oder # oder : #RE: /\n((?:\*|#|:)+)([\w\d\[\(])/g #KO: '\n$1 $2' #QA: textseite, automatisch $content = preg_replace('/\n((?:\*|#|:)+)([\w\d\[\(])/', "\n$1 $2", $content); # Leerzeichen am Ende einer ref #RE: / <\/ref>/g #KO: '</ref>' #QA: textseite, automatisch $content = preg_replace('/ <\/ref>/', '</ref>', $content); //nicht getestet # Leerzeichen beim references-Tag #RE: /<references *\/>/gi #KO: '<references />' #QA: textseite, automatisch $content = preg_replace('/<references *\/>/i', '<references />', $content); //nicht getestet # Mehrere Kategorien in einer Zeile #RE: /(\[\[Kategorie:[^\]]+\]\])[ \t]*\[/g #KO: '$1\n[' #QA: textseite, automatisch $content = preg_replace('/(\[\[Kategorie:[^\]]+\]\])[ \t]*\[/', "$1\n[", $content); return $content; } function intern_ersetze_kleinigkeiten_semiautomatisch($content){ #http://en.wikipedia.org/w/index.php?title=Wikipedia:Village_pump_(technical)&oldid=128295924#dontcountme.3Ds.3F #RE: /&dontcountme=s/g #KO: '' #QA: seite, semiautomatisch $content = preg_replace('!&dontcountme=s!', '', $content); return $content; } function intern_ersetze_kleinigkeiten_semiautomatisch_textseite($content){ #Reihenfolge bei Bildern #RE: /(right|left)(\s*\|\s*)+thumb/g #KO: 'thumb|$1' #QA: textseite, semiautomatisch $content = preg_replace('!(right|left)(\s*\|\s*)+thumb!', "thumb|$1", $content); #Redundantes right #RE: /thumb(\s*\|\s*)+right\s*\|/g #KO: 'thumb|' #QA: textseite, semiautomatisch $content = preg_replace('/thumb(\s*\|\s*)+right\s*\|/', 'thumb|', $content); //nicht getestet #Wikilinks #RE: /\[\[[ \t]*([^\]| \t][^\]|]*[^\]| \t])[ \t]*\|[ \t]*([^\]| \t][^\]|]*[^\]| \t])[ \t]*\]\]/g #KO: '[[$1|$2]]' #QA: textseite, semiautomatisch $content = preg_replace('/\[\[[ \t]*([^\]| \t][^\]|]*[^\]| \t])[ \t]*\|[ \t]*([^\]| \t][^\]|]*[^\]| \t])[ \t]*\]\]/', '[[$1|$2]]', $content); //nicht getestet #Wikilinks #RE: /\[\[([^|\]]+)\|\1([^|\] \t]*)\]\]/g #KO: '[[$1]]$2' #QA: textseite, semiautomatisch $content = preg_replace('/\[\[([^|\]]+)\|\1([^|\] \t]*)\]\]/', '[[$1]]$2', $content); //nicht getestet #prettytable nach wikitable #RE: /prettytable/g #KO: 'wikitable' #QA: textseite, semiautomatisch $content = preg_replace('/prettytable/', 'wikitable', $content); //nicht getestet # Pipes an den Anfang in Infoboxen, dabei möglichst in Tabellen weder „||“ noch „{|“ zerstören. #RE: /([^\n|{])\|\n/g #KO: '$1\n|' #QA: textseite, semiautomatisch $content = preg_replace('/([^\n|{])\|\n/', "$1\n|", $content); //nicht getestet # Plenken #RE: / +([,;.:!?])/g #KO: '$1' #QA: textseite, semiautomatisch $content = preg_replace('/ +([,;.:!?])/', '$1', $content); //nicht getestet # falsche Zeichen in DEFAULTSORT #RE: /\{\{\s*DEFAULTSORT\s*:([^}^ä]*)ä([^}^ä]*)\s*\}\}/g #KO: '{{DEFAULTSORT:$1a$2}}' #QA: textseite, semiautomatisch $content = preg_replace('/\{\{\s*DEFAULTSORT\s*:([^}^ä]*)ä([^}^ä]*)\s*\}\}/', '{{DEFAULTSORT:$1a$2}}', $content); //nicht getestet # falsche Zeichen in DEFAULTSORT #RE: /\{\{\s*DEFAULTSORT\s*:([^}^Ä]*)Ä([^}^Ä]*)\s*\}\}/g #KO: '{{DEFAULTSORT:$1A$2}}' #QA: textseite, semiautomatisch $content = preg_replace('/\{\{\s*DEFAULTSORT\s*:([^}^Ä]*)Ä([^}^Ä]*)\s*\}\}/', '{{DEFAULTSORT:$1A$2}}', $content); //nicht getestet # falsche Zeichen in DEFAULTSORT #RE: /\{\{\s*DEFAULTSORT\s*:([^}^ö]*)ö([^}^ö]*)\s*\}\}/g #KO: '{{DEFAULTSORT:$1o$2}}' #QA: textseite, semiautomatisch $content = preg_replace('/\{\{\s*DEFAULTSORT\s*:([^}^ö]*)ö([^}^ö]*)\s*\}\}/', '{{DEFAULTSORT:$1o$2}}', $content); //nicht getestet # falsche Zeichen in DEFAULTSORT #RE: /\{\{\s*DEFAULTSORT\s*:([^}^Ö]*)Ö([^}^Ö]*)\s*\}\}/g #KO: '{{DEFAULTSORT:$1O$2}}' #QA: textseite, semiautomatisch $content = preg_replace('/\{\{\s*DEFAULTSORT\s*:([^}^Ö]*)Ö([^}^Ö]*)\s*\}\}/', '{{DEFAULTSORT:$1O$2}}', $content); //nicht getestet # falsche Zeichen in DEFAULTSORT #RE: /\{\{\s*DEFAULTSORT\s*:([^}^ü]*)ü([^}^ü]*)\s*\}\}/g #KO: '{{DEFAULTSORT:$1u$2}}' #QA: textseite, semiautomatisch $content = preg_replace('/\{\{\s*DEFAULTSORT\s*:([^}^ü]*)ü([^}^ü]*)\s*\}\}/', '{{DEFAULTSORT:$1u$2}}', $content); //nicht getestet # falsche Zeichen in DEFAULTSORT #RE: /\{\{\s*DEFAULTSORT\s*:([^}^Ü]*)Ü([^}^Ü]*)\s*\}\}/g #KO: '{{DEFAULTSORT:$1U$2}}' #QA: textseite, semiautomatisch $content = preg_replace('/\{\{\s*DEFAULTSORT\s*:([^}^Ü]*)Ü([^}^Ü]*)\s*\}\}/', '{{DEFAULTSORT:$1U$2}}', $content); //nicht getestet # falsche Zeichen in DEFAULTSORT #RE: /\{\{\s*DEFAULTSORT\s*:([^}^ß]*)ß([^}^ß]*)\s*\}\}/g #KO: '{{DEFAULTSORT:$1ss$2}}' #QA: textseite, semiautomatisch $content = preg_replace('/\{\{\s*DEFAULTSORT\s*:([^}^ß]*)ß([^}^ß]*)\s*\}\}/', '{{DEFAULTSORT:$1ss$2}}', $content); //nicht getestet return $content; } function ist_textseite($page){ //TODO return false; } function hole_pre_tags($content){ return intern_pre_tags('hole', $content); } function setze_pre_tags($content){ return intern_pre_tags('setze', $content); } function intern_pre_tags($funktion, $content){ static $pre_tags = 'leer'; $wort= // füge hier deinen lieblings-zufalls-string ein "3" ist schön, aber ungeeignet, da "3" in manchen artikeln vorkommt. nimm lieber diese // http://random.org/strings/?num=2&len=20&digits=on&upperalpha=on&loweralpha=on&unique=on&format=html&rnd=new // beiden und hänge sie hintereinander. also zum beispiel "vFycxauUoSwzLrvi8psAJY9fMIxc9QNoYh4xROVM". // "vFycxauUoSwzLrvi8psAJY9fMIxc9QNoYh4xROVM" ist ungeeignet, da er auf dieser seite vorkommt. // random.org ist auch geeignet, wenn du dich mal wieder irgendwo anmelden willst und dir fällt kein benutzername ein. achte aber darauf, // dass die zeichenkette die du auswählst nicht wie 'amok' klingt. if($funktion == "hole"){ if($pre_tags != 'leer'){ die("inter_pre_tags: hole: pre_tags war nicht leer."); } $pre_tags=array(); $i=0; $regulaerer_ausdruck="!<pre>.*?</pre>!s"; // s sagt: . matcht auch \n while(preg_match($regulaerer_ausdruck, $content, $gefunden)){ $pre_tags[$i] = $gefunden[0]; $content = preg_replace($regulaerer_ausdruck, "$wort"."$i"."Z", $content, 1); $i++; } } else if($funktion == "setze"){ foreach($pre_tags as $i => $pre_tag){ $content = preg_replace("!$wort"."$i"."Z!", $pre_tags[$i], $content, 1); } $pre_tags='leer'; } else { die("intern_pre_tags: fehler: parameter ($funktion)"); } return $content; }