Wikisource:RE-Werkstatt/Experiment
/*------------------------------------------------------------------------------------*/
/* Datei: 43 PHP_Pgm.sas */
/* Aufgabe: Hilfsfunktionen für Administrator, z.B. Faksimile Lexikon laden */
/* */
/* Output: &DDNAM.www/meyers/code/ */
/* &DDNAM.www/meyers/Admin/code/ */
/*------------------------------------------------------------------------------------*/
options nonotes &NONO &ALLNO ; options notes; * options nosource; /**/
data _null_; /* wiki.php */
%PHPCODE( "&DDNAM.www/meyers/Admin/code/wiki.php", SPACE=YES );
datalines4;
<?php // Zeile 13-1
require_once 'C:/Users/info/Documents/www/meyers/code/Include.php'; // ANKER definieren
require_once ANKER.AdminC.'compress_func.php';
define('BUCH', array('A','B','C','D','E','G','H','I','K','L',
'M','N','O','P','R','S','T','W','X','Z') ); // Roscher, ausfhr
define('KATEG',array('Aigyptiade','Aipytide', 'Amazone', 'Aphrodite','Apollon', 'Ares', 'Artemis',
'Asklepios', 'Athene', 'Beiname einer Gottheit', 'Danaide', 'Demeter', 'Dionysos',
'Eromenos der griechischen Mythologie',
'Gegenstand der griechischen Mythologie','Gestalt der griechischen Mythologie','Gigant (Mythologie)',
'Griechische Gottheit','Griechische Mythographie', 'Griechische Sage', 'Griechischer Flussgott',
'Hades', 'Hamadryade','Hephaistos','Herakles', 'Hermes', 'Hestia', 'Horen (Mythologie)',
'Ikarus', 'Ilias', 'Kentaur', 'Kreatur der griechischen Mythologie','König der griechischen Mythologie',
'Liste (Mythologie)', 'Medea', 'Meeresgottheit', 'Mischwesen','Muse', 'Najade',
'Nereide', 'Nymphe', 'Odysseus', 'Okeanide', 'Olymp', 'Orpheus', 'Pan', 'Phönizier',
'Poseidon', 'Prometheus','Pygmalion', 'Zeus', 'Ödipus', 'Person (Trojanischer Krieg)' ));
define('ROSCH',array('A' => array('1AH', '11', ''), 'M' => array('22LM','0202', ''),
'B' => array('1AH', '11', ''), 'N' => array('3NP', '0301', ''),
'C' => array('1AH', '11', ''), 'O' => array('3NP', '0301', ''),
'D' => array('1AH', '11', ''), 'P' => array('3NP', '0301','0302'),
'E' => array('1AH', '11', ''), 'R' => array('45QT','0302', ''),
'G' => array('1AH', '11', ''), 'S' => array('45QT', '04', ''),
'H' => array('1AH', '12', ''), 'T' => array('45QT', '05', ''),
'I' => array('21IK','0201',''), 'W' => array('67UZSuppl','06', ''),
'K' => array('21IK','0201',''), 'X' => array('67UZSuppl','06', ''),
'L' => array('22LM','0202',''), 'Z' => array('67UZSuppl','06', '') ));
define('SPALT',array('A' => array(10, 1), 'M' => array(11,2214),
'B' => array( 9, 744), 'N' => array(11, 1),
'C' => array( 9, 868), 'O' => array(11, 593),
'D' => array( 9, 932), 'P' => array(11,1240),
// Offset = Delta Seiten, 1. Spalte
'E' => array(10,1209), 'R' => array(11, 61),
'G' => array(10,1565), 'S' => array(11, 228),
'H' => array(10,1778), 'T' => array(11, 1),
'I' => array(11, 1), 'W' => array(11, 1),
'K' => array(11, 822), 'X' => array(11, 518),
'L' => array(11,1775), 'Z' => array(11, 531) ));
define('ATTRIB',array('TOT' => array('smallint( 4) unsigned not null', 1)
, 'Ros' => array(' char( 2)', 1 )
, 'R_N' => array(' char( 12)', 1 )
, 'BD' => array(' char( 1)', 1 )
, 'SP' => array('varchar( 12)', 1 )
, 'ABC' => array(' char( 1)', 1 )
, 'BKL' => array(' char( 1)', 1 ) // Begriffsklärung
, 'Anz_R' => array('smallint( 4)', 1 ) // Anzahl Referenzen
, 'BITMAP' => array('varchar(6000)', 1 ) // von wo wird nach hier referenziert
, 'OK' => array(' char( 4)', 1 ) // Delta zwischen Roscher Spalte und Seite
, 'N' => array('smallint( 4)', 1 )
, 'Datum' => array('varchar( 20)', 18 )
, 'R_S' => array('varchar( 60)', 1 ) // Roscher Seite
, 'Person' => array('varchar( 60)', 10 )
, 'griechisch' => array('varchar( 60)', 10 )
, 'Name' => array('varchar(200)', 10 )
, 'RE' => array('varchar( 60)', 10 )
, 'Nachweis' => array('varchar(200)', 1 )
, 'NWS' => array('varchar(200)', 1 )
, 'kByte' => array(' int( 8)', 1 ) // Grösse Artikel in WP
, 'Beschreibung'=> array('varchar(600)', 1 )
, 'Tag' => array('varchar(200)', 1 )
, 'Relatio' => array('varchar(100)', 1 )
, 'K_K' => array('smallint( 4)', 1 )
, 'K_C' => array('smallint( 4)', 1 ) // Kate_complet Schlüssel
, 'IS_OK' => array(' char( 1)', 1 ) // Kategorie ist relevant
, 'NK' => array('smallint( 4)', 1 )
, 'KC' => array('smallint( 4)', 1 ) // Kate_complet
, 'I_Kateg' => array('smallint( 4)', 1 )
, 'Kategorie' => array('varchar(100)', 1 )
));
define('LDG','Liste der Gestalten der griechischen Mythologie');
define('W_D','/Aufgaben/Datenbank/'); // W_D Datenbank aus W_1 für Datenbank
define('W_U','/Aufgaben/Datenbank/G_update.txt'); // W_U update BKL + ANZ_R in G_LISTE
define('W_I','/Aufgaben/in WIKI/'); // W_I Seiten in WP als Download
define('W_0','/Aufgaben/Lexikon/Wikipedia/Liste/Wiki-Liste_'); // W_0 Liste der Gestalten je Buchstabe
define('W_1','/Aufgaben/Lexikon/Wikipedia/Wiki-1_Liste.csv'); // W_1 erweiterte Liste aus W_0 mit mehr Spalten
define('W_2','/Aufgaben/Lexikon/Wikipedia/Wiki-2_Mythos.csv'); // W_2 EXCEL aus DB 1:1 die LISTE
define('W_A','/Aufgaben/Lexikon/Wikipedia/Wiki-8_Kate_all.csv'); // W_A EXCEL Kategorien der LISTE
define('W_B','/Aufgaben/Lexikon/Wikipedia/Wiki-7_Bilder.csv'); // W_B Bilder je Artikel aus W_I
define('WCC','/Aufgaben/Lexikon/Wikipedia/Wiki-9_Kate_complet.csv'); // WCC Kategorie mit LEMMA aus W_C
define('W_K','/Aufgaben/Lexikon/Wikipedia/Wiki-3_Kategorie.csv'); // W_K Kategorien im Detail aus W_I
define('W_L','/Aufgaben/Lexikon/Wikipedia/Wiki-6_Links.csv'); // W_L Links je Artikel aus W_I
define('W_R','/Aufgaben/Lexikon/Wikipedia/Wiki-4_Referenz.csv'); // W_R Referenzen im Detail aus W_I
define('W_C','/Aufgaben/Lexikon/Wikipedia/Kategorie/'); // W_C Kategorien aus WP
define('W_S','/Aufgaben/Lexikon/Wikipedia/Stand/'); // W_S Versionen der Liste je Buchstabe
define('W_T','/Aufgaben/Lexikon/Wikipedia/Wiki-5_Titel.csv'); // W_T Titel aus W_I
define('W_V','/Aufgaben/Lexikon/Wikipedia/Version/'); // W_V LEMMA-ta Versionen als CSV
define('W_G','/www/meyers/project/Griechische_Mythologie.csv'); // W_G als Download in WP aus DB 1:1 die LISTE
define('TIM', microtime(true) );
//---------------------------------------------------------Paulys Realencyklopädie ------------------------
define('CSV','";"');
define('CH160',chr(0xC2).chr(0xA0)); //
define('JJ52',date('Y')-71); // gemeinfrei ab 1952 = 2023-71
define('Pauly_RE',PAULY0.' (RE) 1893-1980 auf Wikisource.de');
define('R_I','/Aufgaben/in RE/'); // R_I RE:'online WS' als Download
define('R_R','/Aufgaben/Lexikon/Wiki RE/'); // R_R Aufgaben Lexikon Wiki RE
define('RE_ABC',['a','ak','an','ar','as','b', 'c', 'ch','d', 'di','e','er','f', 'g', 'h', 'hi',
'i','k', 'kl','l', 'lf','m', 'mb','mi','n', 'o', 'p','pe','pi','po','pr','q',
'r','s', 'se','so','t', 'th','ti','u', 'uf','x', 'y','z']);
define('RE_ORDER', array_flip( array_keys(RE_BAND) ));
define('ROMAN', array(0, 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX', 'X',
'XI', 'XII', 'XIII', 'XIV', 'XV', 'XVI', 'XVII', 'XVIII', 'XIX', 'XX',
'XXI','XXII','XXIII','XXIV','XXV','XXVI','XXVII','XXVIII','XXIX','XXX') );
define('TO_ROM', array_flip(ROMAN) );
define( 'Akzent','ΆάΈέΉήΊίΌόΎύΏώ'.'ᾶῆῖῶῦ'.'ὰὲὴὶὸὺὼ'); // Akzente neugriechisch + ~
define('NoAkzent','ΑαΕεΗηΙιΟοΥυΩω'.'αηιωυ'.'αεηιουω');
define( 'Asper', 'ἀἁἈἉἐἑἘἙἠἡἨἩἰἱἸἹὀὁὈὉὐὑὙὛὠὡὨὩῤῥῬ' ); // Lenis+Asper, ohne Akzente
define('NoAsper', 'ααΑΑεεΕΕηηΗΗιιΙΙοοΟΟυυΥΥωωΩΩρρΡ' );
define('NACH', "}])?!':;,-".NL ); // ‘ in mytrim(), ohne .
define('NACH2', NACH.'.' );
define('TAGS', '<big><small><ref><sup><sub><u>' );
define('SPRA',['de'=>'Deutsch', 'en'=>'English', 'fr'=>'Français',
'it'=>'Italiano', 'es'=>'Español', 'ca'=>'Català',
'pt'=>'Português','tr'=>'Türkçe', 'el'=>'Ελληνικά',
'la'=>'Latina', 'bg'=>'Balgarski',]);
define('LAT_k', array( 'Au','Eu', 'Hy',
'au','eu','a','b','ch','d','e','f','ph','ps','g','th','i','j','k','l','m','n','o','p','q','r','s','t','u', 'v','w','x','y','z','σ ',
'A','B','Ch','D','E','F','Ph','Ps','G','Th','I','J','K','L','M','N','O','P','Q','R','S','T','U', 'V','W','X','Y','Z'));
define('GRE_k', array( 'Αυ','Ευ', 'Ὑ',
'αυ','ευ','α','β','χ', 'δ','ε','φ','φ', 'ψ', 'γ','θ', 'ι','j','κ','λ','μ','ν','ο','π','q','ρ','σ','τ','ου','v','w','ξ','υ','ζ','ς ',
'Α','Β','Χ', 'Δ','Ε','Φ','Φ', 'Ψ', 'Γ','Θ', 'Ι','J','Κ','Λ','Μ','Ν','Ο','Π','Q','Ρ','Σ','Τ','Ου','V','W','Ξ','Υ','Ζ'));
define('EXCb', array('αι'=>'αἱ','απο'=>'ἀπὸ','αν'=>'ἄν','Αρχ.'=>'Ἀρχ.','αρχ'=>'ἀρχ','αρχων'=>'ἄρχων','Αθ'=>'Ἀθ',
'αυτον'=>'αὐτὸν','αυτου'=>'αὐτοῦ','αυτοθ'=>'αὐτοῦ','αυτω'=>'αὐτῶ','αυτων'=>'αὐτῶν',
'γαρ'=>'γὰρ','γη'=>'γῆ','δε'=>'δὲ','δημος'=>'δῆμος', // 'δ'=>'ὁ',
'ε'=>'ἐ','εαν'=>'ἐὰν','ει'=>'εἰ','ειμεν'=>'εἶμεν','ειναι'=>'εἶναι',
'ειπεν'=>'εἶπεν','ειπη'=>'εἴπη','εκ'=>'ἐκ','εν'=>'ἐν','επι'=>'ἐπὶ','Εφ'=>'Ἐφ','Εφημ'=>'Ἐφημ','ες'=>'ἐς',
'εστιν'=>'ἐστιν','εξ'=>'ἐξ','η'=>'ἡ','ιερος'=>'ἱερός','Ιππος'=>'Ἵππος',
'κε'=>'κε','μεν'=>'μὲν','μην'=>'μὴν','μηδεν'=>'μηδὲν','νησος'=>'νῆσος','νυν'=>'νῦν',
'ο'=>'ὁ','οι'=>'οἱ','οις'=>'οἷς','οιον'=>'οἷον','ον'=>'ὅν','δν'=>'ὅν',
'ονκ'=>'οὐκ','δπερ'=>'ὅπερ','οπερ'=>'ὅπερ','οπως'=>'ὅπως',
'ος'=>'ὃς','οτι'=>'ὅτι','οττι'=>'ὅττι','ους'=>'οὓς','ουχ'=>'οὐχ',
'προς'=>'πρὸς','συν'=>'σὺν',
'ταν'=>'τὰν','τας'=>'τὰς','ταυτα'=>'ταῦτα','τε'=>'τε','τη'=>'τῆ','την'=>'τὴν','της'=>'τῆς',
'τοις'=>'τοῖς','τον'=>'τὸν','τοθ'=>'τοῦ','του'=>'τοῦ','τους'=>'τοὺς','τουν'=>'τοῦν',
'τω'=>'τῶ','τφ'=>'τῷ','τῳ'=>'τῷ','των'=>'τῶν',
'υιος'=>'υἱός','υπο'=>'ὑπὸ','υπερ'=>'ὑπὲρ','ων'=>'ὧν','ως'=>'ὡς','ωστε'=>'ὥστε',) );
function RE_Abox( $Abox0 ){
$Dupp = $ZIEL = [];
foreach($Abox0 as $N => $LINE){
$Dupp[$N] = trim(scan($LINE,1,'=' )," '" ); // 17 => 'Athen'
$ZIEL[$N] = trim(scan($LINE,2,'=/')," ',>"); } // 17 => '[[RE:Athenai 1|Athen]]'
natsort($Dupp);
foreach($Dupp as $N => $LINE)
if( isset($Dupp[$N-1]) and $Dupp[$N-1]==$LINE or
isset($Dupp[$N+1]) and $Dupp[$N+1]==$LINE ) /* doppelte KEY behalten */;
else unset($Dupp[$N], $ZIEL[$N]);
$ZIEL = array_unique ($ZIEL);
foreach($Dupp as $N => $LINE ) if(!isset($ZIEL[$N]) ) unset($Dupp[$N]);
$MANY = array_count_values($Dupp);
foreach($Dupp as $N => $LINE ) if( $MANY[$LINE]==1 ) unset($Dupp[$N]);
foreach($Abox0 as $N => $LINE)
if( !isset($Dupp[$N])) unset( $Abox0[$N] );
else $Abox0[$N] = '"'.str_replace(['=>','//','$'],CSV,$Abox0[$N] ).'"';
file_put_contents( ANKER.AdminC.'ALLbox-Dup.csv',
BOM.'"Stichwort'.CSV.'Ziel'.CSV.'BDSE'.CSV.'Quelle : Kurztext"'.NL.
str_replace("'",'',implode(NL,$Abox0)));
}
function RE_ABKURZ ( $TODO ){ // RE-7_Alle-Abkürzungen.txt für [[Wikisource:RE-Werkstatt/Alle Abkürzungen]]
if( RUN or !$TODO ) return;
global $PHILO3, $OPTI, $ALLbox, $PHILOq;
$KURZ = $MENGE = []; $MENG = ''; // '_Grp = // RE_DKP
$DATEI = explode(NL,file_get_contents( ANKER.AdminC.'ALLart.php'));
$Abox0 = explode(NL,file_get_contents( ANKER.AdminC.'ALLbox.php'));
unset( $DATEI[0], $DATEI[count($DATEI)], // Kopfzeile und letzte
$Abox0[0], $Abox0[count($Abox0)] );
foreach($DATEI as $LINE)
$KURZ[trim(scan($LINE,1,'=')," '")] = trim(scan($LINE,2,'$')); // Kurztext
RE_Abox( $Abox0 );
$OUT = '<!-- #########################################################################' .NL.
'Die Seite [[/Alle Abkürzungen]] wird automatisch erstellt, nicht von Hand bearbeiten.'.NL.
'Datenquellen sind $Philol+$DKP bei eLexikon.ch, dort werden die Originale gepflegt.'.NL.
'Falls euch Fehler auffallen, würde ich mich über einen Hinweis hier oder auf' .NL.
'meiner Diskussionsseite freuen. [[Benutzer:ELexikon|ELexikon]]' .NL.
date('d. F Y H:i').' (CEST)' .NL.
'##############################################################################-->' .NL.
'{{Listendaten|THEMA=Realencyclopädie der classischen Altertumswissenschaft' .NL.
'|KURZBESCHREIBUNG=Alle Abkürzungen}}' .NL.
'Hunderte Abkürzungen und Schlüsselwörter sind in der RE zu finden, ihre Quellen ' .NL.
'sind gruppiert:'.NL. '{{Tabellenstile}}' .NL.
'{|class="wikitable mw-collapsible"' .NL. // mw-collapsed
'|-' .NL.
'!Grp.!!RE, Wikipedia, Wikisource ' .NL.
// '!Der Kleine Pauly (DKP)<ref name="DKP">[[w:Der Kleine Pauly]] in der Wikipedia</ref>'.NL.
'|-' .NL.
'|[[#Abk. |Abk. ]]||RE:Abkürzungen (Supplementband I)'.
'<ref>[[RE:Abkürzungen (Supplementband I)]]</ref>'.NL. // 1
// '|[[#Allg. |Allg.]]|| 1. Allgemeine Abkürzungen' .NL.
'|-' .NL.
'|[[#Epig. |Epig.]]||Lateinische Epigraphik, Inschriften<ref name="Epig">'.
'[[w:Lateinische Epigraphik]] in der Wikipedia</ref>'.NL. // 2
// '|[[#Lexika|Lexika]]|| 2. Sammelwerke und Lexika' .NL.
'|-' .NL.
'|[[#Vorn. |Vorn.]]||Lateinische männliche Vornamen<ref name="Epig" />' .NL. // 3
// '|[[#Zeitsch.|Zeitsch.]]|| 3. Zeitschriften und Reihen' .NL.
'|-' .NL.
'|[[#Götter|Götter]]||Griechische und römische Gottheiten<ref name="Philo">'.
'[[Wikisource:RE-Werkstatt/Philologen]]</ref>'.NL. // 4
// '|[[#Einzel|Einzel]]|| 4. Einzelwerke' .NL.
'|-' .NL.
'|[[#Kaiser|Kaiser]]||Römische Kaiser<ref name="Philo" />' .NL. // 5
// '|[[#AutorG|AutorG]]|| 5. Griechische Autornamen und Werktitel' .NL.
'|-' .NL.
'|[[#Autor |Autor ]]|| Antike Autoren<ref>[[w:Liste der Abkürzungen antiker Autoren '.
'und Werktitel]] in Wikipedia</ref>'.NL. // 6
// '|[[#AutorL|AutorL]]|| 6. Lateinische Autornamen und Werktitel' .NL.
'|-' .NL.
'|[[#Phil. |Phil. ]]|| Altphilologen der Neuzeit.' .NL. // 7
// '|[[#Epi. |Epi. ]]|| 7. Epigraphik Datenbank<ref>[https://db.edcs.eu/epigr/'.
// 'hinweise/abkuerz.html Epigraphik Datenbank db.edcs.eu]</ref>'.NL.
'|-' .NL.
'|[[#_ohne |Ohne ]]|| Ohne einige unerwünschte Links.' .NL. // 8
'|}' .NL.
'Als Standard gelten die im Archäologischen Anzeiger üblichen Abkürzungen.' .NL.
// 'sowie die Verzeichnisse in »Der Kleine Pauly« bzw. »Der Neue Pauly«.' .NL.
'{|class="wikitable sortable tabelle-kopf-fixiert"' .NL.
'!Grp.!!Abkürzung!!Kurzbeschreibung!!#';
file_put_contents( ANKER.R_R.'save-csv/_Abk_Temp.txt',
'<?php // RE-ABKURZ() = Kommentierte Abkürzungen' .NL.
str_replace(['<?php','?>',"// '",'<!--xyz-->'],['','',"'* ",''], // '... => '* ...
file_get_contents( ANKER.AdminC.'Philol.php')).NL. // => inkl. Kommentar
str_replace(['<?php','?>',"// '"] ,['','',"'* "],
file_get_contents( ANKER.AdminC.'DerKleinePauly.php')).' ?>');
include ANKER.R_R.'save-csv/_Abk_Temp.txt'; // $PHILO, $DKP = ...
$NNN=''; $N=0;
foreach($PHILO /*+$DKP*/ as $KEY => $TXT){ $LINK = trim(scan($TXT,1,'|'),'['); // Plausibilisieren
if( $LINK === '{{RE siehe' ) $LINK ='RE:'.trim(scan($TXT,2,'|'),'}'); // grüner Link
$TXT0 = $TXT;
if(strpos($TXT,'{{SperrSchrift')!==false){ $FULL = $LINK; $LINK=BLK; $SPERR=1;} // Altphilologe
else { $FULL = ''; $SPERR=0;
if( !in_array($TXT[0],['[','{'] ) ) $TXT = scan($TXT,2,'|'); }
if( $FULL == '{{SperrSchrift' ) $FULL = '-';
if(substr($KEY,0,6) == '_Grp =' ) { $DLM = '||colspan="3" style="text-align:left;"|';
$LINK = ''; $TIT = '!' ;$NNN = trim(scan($KEY,2,'='));
if( strpos($TXT,']') ) $TXT = '{{Überschrift|' .$NNN.'}}'. $TXT;
else $TXT = '{{Überschrift|' .$NNN.'}}'. scan($TXT0,1,'|');
$KEY = 'ι'.scan($KEY,2,'=');$NN1 = '-'; }
else { $DLM = '||'; $TIT = '|' ;$NN1 = $NNN; }
if( $NNN == '' ) continue; // am Anfang
$NOK = ' <sup>[0]</sup>';
if( substr($KEY,0,2) === '* ' ) $KEY = substr($KEY,2) .$NOK; // ist Kommentar
elseif(!isset($PHILO3[$KEY]) and $TIT=='|')$KEY .= $NOK; // unerwünscht
else $NOK = ''; // Normalfall
if( $TXT == '' ){$TXT = $KEY; $NOK='';} // Kaiser Iustinianus
$OUT .= trim(NL.'|-'.NL.$TIT.$NN1 // | Grp.
// .'||'.$KEY // Abkürzung
.$DLM.strip_tags($TXT,'<sup><sub>').$NOK // Anzeige
.'||'.$LINK ,'|'); // Kurzbeschreibung
$LINK = substr($LINK,3); $CUT = strpos( $TXT,'<!--');
if(isset($KURZ[$LINK]) and $CUT===false )
$OUT .= ': »'.str_replace(' s. ',' siehe ',$KURZ[$LINK]).'«';
if($CUT){ if( !$SPERR ) $OUT .= ': »'.trim(substr($TXT,$CUT+4),' ->') .'«';
else $OUT .= trim(substr($TXT,$CUT+4),' ->'); }
else if( $SPERR ) $OUT .= $FULL;
if( $TIT=='|' ) $OUT .= '||'.$N++; else $N++;
if( !isset($MENGE[$NN1]) ) $MENGE[$NN1]=1; else $MENGE[$NN1]++;}
$OUT .= NL.'|-'.NL.'!-||colspan="3" style="text-align:left;"|{{Überschrift|_ohne}}'.
'_Ohne die unerwünschten Stichwörter:';
foreach( array_merge(OHNE,['OHNE (2):'],OHN2) as $KEY ){
$OUT .= NL.'|-'.NL.'|';
if(isset($OPTI [$KEY]) ){ $OUT .= '_ohne||'; $TXT= $OPTI [$KEY];} else
if(isset($ALLbox[$KEY]) ){ $OUT .= '_ohne||'; $TXT= $ALLbox[$KEY];} else
{ $OUT .= '_ohne||'; $TXT= ''; }
if(isset($PHILOq[$KEY]) ) $QUE = ' $ '.$PHILOq [ $KEY]; else $QUE = '';
if( $TXT ) $OUT .= '[[RE:'.$KEY.'|'.$KEY.']]' .$QUE;
else $OUT .= $KEY .$QUE;
$OUT .= ' <sup>[0]</sup>||<nowiki>'.$TXT.'||'.++$N;}
foreach( $MENGE as $KEY => $ANZ) if($KEY!='-')
$MENG .= ' + '.$ANZ.BLK.$KEY;
$MENG .= ' = '.($SUM=array_sum($MENGE)).' im Total plus '.($N-$SUM).' gesperrte Elemente.';
file_put_contents( ANKER.R_R.'Input/RE-7_Alle-Abkürzungen.txt',
BOM .str_replace(['|| xy||','[[['],['||-||','[[['],$OUT) .NL.'|}' .NL.
"Legende: [0] Diese Abkürzung wird bei der »Transkription " .
'Wikisource« nicht angewendet, weil sie doppelt vorkommt oder nicht eindeutig ist. '.
'Möglicherweise wird sie aus einer anderen Gruppe übernommen.' .NL2.
'Die Priorität bei mehrdeutigkeiten Abkürzungen ist wie folgt:' .NL.
'# Philologen ' .NL.
'# Stichwörter zu Größeren Artikeln' .NL.
// '# Der Kleine Pauly gemäss Vorwort und Verzeichnis' .NL.
'# Artikel der RE: gemäss Register je Band' .NL.
// '# Die Liste der Abkürzungen antiker Autoren und Werktitel in der Wikipedia.'.NL.
'Die Anzahl Schlüsselwörter je Gruppe beträgt: '.trim($MENG,' +') .NL.
'== Einzelnachweise =='.NL.'');
if( !isset( $MENGE['Epi.'] ) ) $MENGE['Epi.'] = 0;
echo NLBR.EC_. ($N1=count($PHILO)).' Philologen = '.str_replace(
['Phil. +','AutorL +'],['Phil.'.
NLBR.EC_.(($N2=count($DKP))-$MENGE['Epi.']).' Der Kleine Pauly = ', 'AutorL'.
NLBR.EC_ ], trim($MENG,' +') ).
NLBR.EC_.($N1+$N2).' Elemente im Input (+DKP Epigrafik)'.dauert();
echo NLBR.date('H:i:s').' / RE-ABKURZ für Input/RE-7_Alle-Abkürzungen.txt => '.
$N.' Abk. für ws/Alle Abkürzungen'.
NLBR.EC_.dauer(TIM);
exit; // ($N1+$N2-$N).' entfernte Schlüssel.'
}
function RE_AutorWERK( $TODO ){ // Quelle = w:Liste_der_Abkürzungen_antiker_Autoren_und_Werktitel
if(!$TODO ) return;
$ABK = $WERK=$TIT= $DE=$LAGW=$AUTO=$AAA=;
$ABKU = RE_get_csv('Input/RE-0_Autoren+Werke_1.csv');
$OK = 0;
$OUT = '<?php $ALLaaw = array( // Quelle = w:Liste_der_Abkürzungen_antiker_Autoren_und_Werktitel';
'</thead><tbody>';
foreach($ABKU as $LINE){
list($A,$W,$TIT,$DE) = explode( ';', $LINE ); // wenn $A dann $TIT==
$WERK = trim($W );
$TIT = trim($TIT);
if( $A ){ $ABK= ''.$A. ''; $AUTO= $WERK; $AAA = $A;
$WERK='= '.$WERK; $LAGW=BLK;
if( $SSS = strpos( $AUTO,' siehe ')) $AUTO= substr($AUTO,0,$SSS);}
else $ABK= strip_tags( $ABK );
if( !$A and $WERK and !trim($TIT.$DE) and hat_greek($WERK) ){
$ABK= ''.$ABK.''; } else
if( !$A and $WERK ){ $WERK= '+ ' .$WERK;
if ( $TIT ) $TIT = '= ' .$TIT ; } else
if( !$A and !$WERK ){
if($LAGW[0]=='+'){ $ABK= ''.$ABK.''; } else
if($LAGW[0]=='='){ $ABK= ''.$ABK.''; $TIT = ''.$TIT .'' ;
$WERK= ''.$LAGW.'' ;}
else { $ABK=''.$ABK.''; $TIT =''.$TIT .'';}}
if($AAA and mb_strlen($AAA)< 3 and strpos($ABK,'')===false) // AB ist zu kurz
$ABK='' .$ABK. ' (= zu kurz)';
if( strpos($ABK,'')!==false )$CLAS=' class="topgray"'; else $CLAS=; // neuer Autor
if( strpos($ABK,'')!==false )$COLO=' style="color:brown;"'; else $COLO=; // nix tun
if(scan($W,2,BLK) and $WERK[0]=='+')$WERK=''. $WERK.'';
if( 0 ) echo NL.'<tr'.$COLO.'><td'.$CLAS.'>'.$ABK.$TD.$WERK.$TD.$TIT.$TD.$DE.'';
if($COLO or in_array($A,['Men'])) continue;
$OLD = $ABK;
$ABK1 = trim( scan($OLD,1,',()') );
$ABK2 = trim( scan($OLD,2,',()') ); if(strlen(strip_tags($ABK2))<2 ) $ABK2=;
// if($ABK2) echo NLBR.strip_tags($OLD.'...'.$ABK1.' + '.$ABK2);
foreach([$ABK1,$ABK2,$AUTO] as $ABK0) if ($ABK0){
if(substr(strip_tags($WERK),0,1)=='+')
$KEY = $ABK0.str_replace(['(',')'],,substr(strip_tags($WERK),1));
else $KEY = $ABK0;
$TIT = strip_tags( $TIT );
$TXT = $AUTO;
if( $TIT and trim($DE) ) $TXT .= ' / '.trim( $TIT,' =').' / '.$DE; else
if( trim( $TIT .$DE) ) $TXT .= ' / '.trim( $TIT,' =') .$DE;
if( $OK ) echo NL.'
$TTT = str_replace("'","`", trim($TXT)); $KEY = str_replace("'","`",$KEY );
$TXT = "'".strip_tags($KEY."'=> '".$TTT.'|'.$KEY."',");
$POS = mb_strpos( $TXT, '=>' );
if($KEY != $TTT )
$OUT .= NL.mb_substr($TXT,0,$POS).sprintf('%'.max(0,30-$POS).'s',).mb_substr($TXT,$POS);
if(strpos($WERK,'color:blue')){
$POS = strpos($KEY,$ABK0);
$KKK = trim( substr($KEY,0,$POS).substr($KEY,$POS+strlen($ABK0)) );
$TXT = sprintf('%'.(mb_strlen($ABK0)+1).'s',).
"'".strip_tags($KKK."'=> '".$TTT.'|'.$KKK."',");
$POS = mb_strpos($TXT, '=>' );
$OUT.=NL.mb_substr($TXT,0,$POS).sprintf('%'.max(0,40-$POS).'s',).mb_substr($TXT,$POS);
}}}
if($OK) echo NL.'</tbody>
Abk. | Werk | Titel | Deutsch |
---|---|---|---|
file_put_contents( ANKER.AdminC.'ALLaaw.php',$OUT.NL.');?>');
return NLBR.date('H:i:s').' / RE_AutorWERK => '.count($ABKU).
' Abkürzungen antiker Auoren und Werktitel aus der Wikipedia Liste'.NLBR;
}
function RE_DKP ( $TODO ){ // Abkürzungen Der Kleine Pauly in /meyers/Admin/code/DerKleinePauly.php
if(!$TODO ) return;
$ABKA=$AUTOR=$NR=; $N=0;
$DATEI = explode(NL,trim(file_get_contents(
ANKER.R_R.'Input/RE-0_DKP-Abkürzungen.txt'),BOM.NL));
$OUT ='<?php $DKP = array( /* Quelle: 43 PHP_Pgm.sas / RE_DKP(); */'.NL;
foreach($DATEI as $LINE){
$ABK = scan( $LINE,1,TAB); $TEXT = scan(trim($LINE),2, TAB);
if($POS=strpos($TEXT,'[z.B.,')) $TEXT = substr( $TEXT, 0,$POS);
if($ABK[0]==='_'){$NR = $ABK; $OUT .= '//'.NL; }
if($ABK[0]==='*' and $ABK!='*'){$NO = '// '; $ABK=substr($ABK,1);}
else{$NO = ; $N++; }
if(strpos($LINE,TAB)===0){ // Cic. ff. = eingerückt
$ONE = $ABKA .BLK.scan(trim($LINE),1,TAB);
$TWO = $AUTOR.BLK.scan(trim($LINE),2,TAB);
$OUT .= "'".$ONE."'".sprintf('%'.max(0,30-mb_strlen($ONE )).'s',"=> '").$TWO ."|".$ONE."',".NL;
} else {
$OUT .=$NO."'".$ABK."'".sprintf('%'.max(0,30-mb_strlen($NO.$ABK)).'s',"=> '").$TEXT."|".$ABK."',".NL;
$ABKA = trim(scan($LINE,1,BLK)); // Abkürzung Autor
$AUTOR= trim(scan(substr($LINE,strpos($LINE,TAB)),1,BLK));}}
file_put_contents( ANKER.AdminC.'DerKleinePauly.php',trim($OUT).NL.'); /* $DKP */ ?>');
return NLBR.date('H:i:s').' / RE_DKP => '.$N.' Abkürzungen aus "Der Kleine Pauly".'.NLBR;
}
function RE_Doppel ( $TODO ){ // Ist der gleiche Schlüssel in zwei Listen?
if(!$TODO ) return;
$N1 = $N2 = 0; // Details dieser Kombination => der Parameter
// 2700 100.000 Grössere 5000 WP-Liste
global $PHILO,$ALLart, $ALLart2,$DKP, $ALLaaw;
$LIST = [$PHILO,$ALLart, $ALLart2,$DKP, $ALLaaw];
$NAME = '$PHILO $ALLart $ALLart2 $DKP $ALLaaw';
$TEXT =['$PHILO' => '43 PHP_Pgm.sas = Abk.+Vornamen+Götter+Kaiser+Antike Autoren+Philologen',
'$ALLart' => 'RE_6_Werkstatt() = Alle Artikel der RE',
'$ALLart2' => 'RE_6_Werkstatt() = Grössere Artikel',
'$DKP' => 'RE_DKP() = Der Kleine Pauly',
'$ALLaaw' => 'RE_AutorWERK() = w:Liste der antiken Autoren und Werktitel',];
$ISOK =['$PHILO $ALLart' => '20 / 27',
'$PHILO $ALLart2' => '2 / 31', '$ALLart $DKP' => '127 / 127',
'$PHILO $DKP' => '34 / 34',
'$PHILO $ALLaaw' =>'250 / 252', '$ALLart $ALLart2'=> '45 / 45',
'$ALLart2 $ALLaaw' => '3 / 3', '$ALLart $ALLaaw' => '24 / 24', ];
for( $I = 0; $I < count($LIST); $I++){
RE_Mehrfach( $NAM=scan ($NAME, $I+1,BLK),count($LIST[$I]),$TEXT[$NAM] );
for($J =$I+1; $J < count($LIST); $J++){ $N1++;
RE_Double($N1, $N2,$LIST[$I],$LIST[$J],scan($NAME,$I+1,BLK),scan($NAME,$J+1,BLK),$ISOK);}}
return NLBR.date('H:i:s').' / RE_Doppel hat die Eindeutigkeit geprüft.'.NLBR;
} // Loop,prt, $A, $B, 'A', 'B'
function RE_Double($N1, $N2, $A, $B, $NAME1, $NAME2, $ISOK){
global $PHILO3, $ALL;
$DLM0='X X X X ';
$DLM1= '_ _ _ _ _ ';
$N= 0; $NN=array($DLM0=>0,$DLM1=>0);
foreach( $A as $KEY => $TXT)
if( isset($B[$KEY]) and $TXT!= $B[$KEY] and isset($PHILO3[$KEY]) ){$N++;
if( strpos( $TXT ,'[[')!==false ) $A1 = substr(scan($TXT ,1,'[|'),3);
else if( strpos( $TXT ,'{{')!==false ) $A1 = scan($TXT ,2,'|}');
else $A1 = $TXT;
if( strpos($B[$KEY],'[[')!==false ) $B1 = substr(scan($B[$KEY],1,'[|'),3);
else if( strpos($B[$KEY],'{{')!==false ) $B1 = scan($B[$KEY],2,'|}');
else $B1 = $B[$KEY];
if($A1==$B1){$DLM = $DLM1; $NN[$DLM1]++; $COLO='color:gray;' ;}
else {$DLM = $DLM0; $NN[$DLM0]++; $COLO='color:black;';}
if( isset($ALL['RE:'.$A1][0]['Text' ]) ) $A2 = BLK.$ALL['RE:'.$A1][0]['Text'];
else $A2 = ' ('.$A1.')';
if( isset($ALL['RE:'.$B1][0]['Text' ]) ) $B2 = BLK.$ALL['RE:'.$B1][0]['Text'];
else $B2 = ' ('.$B1.')';
if( isset($ALL['RE:'.$A1][0]['Anfang'])) $A2 .=' =: '.$ALL['RE:'.$A1][0]['Anfang'];
if( isset($ALL['RE:'.$B1][0]['Anfang'])) $B2 .=' =: '.$ALL['RE:'.$B1][0]['Anfang'];
$NT1 = $NAME1; $NT2= $NAME2;
if(strpos( $TXT, $PHILO3[$KEY])!==false)$NT1=''.$NAME1.'';
if(strpos($B[$KEY],$PHILO3[$KEY])!==false)$NT2=''.$NAME2.'';
if( $N1==$N2 ) if( 1 or strpos($COLO,'black') )
echo str_replace(['|','',''],[' | ','',' '],
NLBR.''.$N1.'. '.NBSP.BLK.$N.'. '.$KEY.' ist doppelt:'.
NLBR.$DLM.$NT1.': ' .str_replace(['<','>'],[' ⟨','⟩'], $TXT ).$A2.
NLBR.$DLM.$NT2.': ' .str_replace(['<','>'],[' ⟨','⟩'], $B[$KEY]).$B2.''.
''.
NLBR.$DLM1.'Priorität= '.str_replace(['<','>'],[' ⟨','⟩'],$PHILO3[$KEY]).'');}
$FFF = $NN[$DLM0].' / '.$N;
$TYP = $NAME1.BLK.$NAME2;
if($NN[$DLM0] == 0 or isset($ISOK[$TYP]) and $ISOK[$TYP]==$FFF)
{$FAZIT= $FFF.' ✅'; $KOM = '.'; }
else {$FAZIT= $FFF.' not OK'; if(isset($ISOK[$TYP]))$KOM=' statt '.$ISOK[$TYP].'.';
else $KOM=' statt ??';}
echo NLBR.$N1.'. RE_Double: '.NBSP.NBSP.$NAME1.' ('.count($A).') und '.$NAME2.' ('.
count($B).') haben '.$FAZIT.' anderes Ziel / gleicher Schlüssel'.$KOM.NLBR;
}
function RE_Mehrfach( $NAME, $ANZ, $TEXT ){ // Ist der gleiche Schlüssel mehrfach?
global $PHILO3;
$KURZ = str_replace(['PHILO' ,'DKP' ],
['Philol','DerKleinePauly'],trim($NAME,'$'));
$FULL = explode(NL,file_get_contents(ANKER.AdminC.$KURZ.'.php'));
echo NLBR.'__RE_Mehrfach '.$NAME.' ('.$ANZ.')'.
' innerhalb Datei '.$KURZ.'.php ↦ Quelle '.$TEXT;
$CHECK = [];
foreach($FULL as $LINE){
$KEY = scan( $LINE, 1, '=');
if(isset($PHILO3[$KEY]) ) // nur relevante Stichworte
if(isset($CHECK [$KEY]) and $CHECK[$KEY] and strpos($KEY,'_Grp')===false and $KEY[0]!='/'){
if( $CHECK [$KEY]!=substr($LINE,strlen($KEY))){$C1=''; $C2='';}
else {$C1=; $C2=; }
echo NLBR.$C1.$NAME.$C2.': '.str_replace('<!','<',mb_substr($KEY.$CHECK[$KEY],0,100));}
$CHECK[$KEY] = substr($LINE,strlen($KEY));
}
}
//---------------------------------------------------------Roscher Liste der Gestalten --------------------
function array_TXT($ELE,$DLM){ // array in TEXT umwandeln
$OUT = ;
if(count($ELE))
foreach( $ELE as $E)
$OUT .= $DLM.$E;
return $OUT;
}
function BLK_fix($TXT){
return str_replace(BLK,NBSP,trim($TXT));
}
function LINK_ref($LINK){ // Wiki-Link Abas aufbrechen zum Lemma-Titel "Aba (Nymphe)"
$ELE = explode('|',trim($LINK));
if( $NUM = mb_strpos($ELE[0],'#') ) // # am Schluss abschneiden
$ELE[0]=mb_substr($ELE[0],0,$NUM);
return trim($ELE[0],'[]');
}
function NWS($TEXT){ // Nachweis aus Liste aufbrechen
$TEXT = str_replace(array('|RE]],','Roscher], '),
array('|RE]].','Roscher]. '),$TEXT.BLK); // mit . statt ,
$SPLIT = '. ';
$ELE = explode('. ',trim($TEXT));
$RE = $Ros = $R_N = $R_S = ;
foreach($ELE as $E ){
$I1 = strpos($E,'[[s:RE:');
$I2 = strpos($E,'Roscher');
if($I1!== false){
$RE = LINK_ref( substr($E,$I1+7) );
$TEXT= str_replace($E,,$TEXT); }
if($I2!== false){
$T = str_replace('Roscher]',,trim($E,'[ .'));
$Ros = scan($T,1,BLK);
$R_N = scan($T,2,BLK);
$R_S = scan($T,3,BLK);
$TEXT= str_replace($E,,$TEXT); }}
$NWS = trim($TEXT,' .');
return array($RE,$Ros,$R_N,$R_S,$NWS);
}
function print_r2( $VAR, $OPT=0, $NAME='Die Variable' ){ // $OPT 0 = print_r
'.NL;
if( is_array ( $VAR ) and $OPT ){ // 2 = return
$O .= ' "Schlüssel TAB Wert" zum Array mit '.($N=count($VAR)).' Elementen:'; // 3 = ohne Titel
if( $OPT == 3 ) $O = '';
if(($N=count($VAR)) > 100 ) $O .= NL.TAB.'Das sind mehr als 100 Elemente.';
else foreach($VAR as $KEY => $VAL)
if( is_array( $VAL) ) $O .= NL.TAB.$KEY.TAB.'Array { '.count($VAL).' }';
else $O .= NL.TAB.$KEY.TAB.$VAL;
} else // $OPT = 0
$O .= str_replace([NL.'(',NL2,], // ? NL.'('
[ '(',NL ,],print_r($VAR,1));
$O = NL.'<pre class="lh11">'.$O.'
if( $OPT < 2 ) echo $O;
else return $O;
}
function print_rbde( $VAR, $SPAL ){ // $VAR = $RBDE['S IX']
' .NL2.// $SPAL= Spalte 1210';
'1. Überblick zum Array $RBDE mit '.($N=count($VAR)).' Elementen.' .NL;
foreach($VAR as $KEY => $VAL) // Ziel: 1. und letztes
if( is_array($VAL) ) echo NL.TAB.$KEY.TAB.'Array { '.count($VAL).' }'; // Lemma je Spalte zeigen
else echo NL.TAB.$KEY.TAB.$VAL;
echo NL2.'2. Ein Einblick:'.
NL2.'Spalte'.TAB.'Anf.:';
$COLS = ['e_aN','e_AA','ersN','erst', 'c_aN','c_AA','conN','cont',];
foreach( $COLS as $I => $CC ){
if($I==4) echo NL.BLK.TAB.'Ende:';
echo BLK.TAB.$CC; }
for( $S = $SPAL; $S <= $SPAL+5; $S++ ){ echo NL;
foreach( $COLS as $I => $CC ){
if(isset($VAR[$CC][$S]) ) $V = $VAR[$CC][$S];
else $V = '.';
if( $I==0 ) echo NL.$S .TAB.'Anf.:'.TAB.$V;
else if($I==4 ) echo NL.BLK.TAB.'Ende:'.TAB.$V;
else echo BLK .TAB.$V; }}
echo '
}
function Rela($BESCHR,$TAG){ // Relationen finden und fixieren
$TAG = str_replace(array('Amazone', 'das ist ','Dolione' ,'Freier der' ,'Gatte der ','Gattin des ','Gefährte des '),
array('Amazonen','das_ist ','Doliones','Freier_der ','Gatte_der ','Gattin_des ','Gefährte_des '),$TAG);
$TAG = str_replace(array('Geliebte des ','Gigant' ,'Mutter de','Vater de','Schwester de'),
array('Geliebte_des ','Gigant (Mythologie)','Mutter_de','Vater_de','Schwester_de'),$TAG);
if(mb_substr($TAG,0,2)=='[[') $RELATIO = LINK_ref($TAG);
else $RELATIO = scan($TAG,1,BLK);
return $RELATIO;
}
function SPALTEN($ABC,$Ros,$BD,$R_N,$SP){ // Spalte / Seite Roscher vergleichen
if($BD == ) return;
if($Ros=='Ro') $I=0; else $I=1;
$OFF = SPALT[$ABC][$I];
$DELTA = -$OFF + 2*trim($R_N,'n') - (int)$SP;
if(1<$DELTA)
return $DELTA;
}
function WIKI_beschr($LEMMA,$WAS){
global $link;
$OUT = ;
$result = mysqli_query($link,$query='select '.$WAS.' from G_LISTE where PERSON="'.
str_replace(array('"',"'",'\\'),,$LEMMA).'"');
my_error('WIKI_beschr',$query);
if($result){
if( $ZEILEN = mysqli_num_rows( $result) )
if($zeile = mysqli_fetch_array($result) )
$OUT = $zeile[0];
mysqli_free_result($result);
}
if( $WAS=='BESCHREIBUNG' ) return str_replace(array('',''),array('',''),$OUT);
else return $OUT;
}
function WIKI_create($NAME){ // von der Gesamtliste W_1 aller Gestalten zur Datenbank W_D
$w1 = fopen(ANKER.W_1,'rb'); // erweiterte Liste, 1:1 mit A-Z
if($w1===false){
Pgm WIKI_create
'); } $HEAD = str_replace(array(BOM,'"',NL), , fgets($w1) ); // erste Zeile lesen, dabei BOM, " und NL entfernen
$COLS = explode(';',$HEAD);
$PRIM = $COLS[0] ;
fclose( $w1 );
$TXT = '/* '.ANKER.'/DB> mysql l --default-character-set=utf8 -u root --password=xxx < '.$NAME.'.txt'.NL.
BLK3.'hostpoint: phpMyAdmin - SQL-Textdatei laden'.NL.
BLK3.'43 PHP_Pgm.sas / wiki.php'.NL2.
'*/ drop table if exists '.$NAME.'; /*[_END_]/* */'.NL2.
BLK3.'create table ' .$NAME.NL;
$DLM= BLK3.'( ';
foreach($COLS as $C ){
$TXT .= $DLM.sprintf('%-15s',strtoupper($C)).sprintf('%12s',ATTRIB[$C][0]); $DLM = NL.BLK3.', '; }
$TXT .= ' );'.NL2.
BLK3.'alter table '.$NAME.' add primary key ('.$PRIM.');' .NL.
BLK3.'alter table '.$NAME.' add index (PERSON);' .NL.
BLK3.'alter table '.$NAME.' comment="CREATE '.W_D.BLK.date('Y-m-d H:i').'";' .NL2.
'truncate table '.$NAME.' ; /* erstellt: '.date('Y-m-d').' aus WIKI_create */'.NL.
'insert '.BLK.' into '.BLK.$NAME.' values /* Spalten-Namen' .NL2.BLK2;
$DLM = ;
foreach($COLS as $C ){
$TXT .= $DLM.sprintf('%-'.ATTRIB[$C][1].'s',strtoupper($C)); $DLM = ','.TAB; }
$TXT .= ' */'.NL2 ;
$LINES = file(ANKER.W_1); // /Wikipedia/Wiki-Liste_1.csv lesen
$DLM = BLK;
foreach($LINES as $N => $L ) if( $N ){
if($N>1 and ($N-1)%500 ==0)
$TXT.= '; /*[_END_]/* */'.NL2.'insert into '.$NAME.' values'.NL; $DLM = BLK;
$TXT .= $DLM.'('.str_replace([NL,'";"'],[,'",'.TAB.'"'],$L).')';} $DLM = NL.',';
file_put_contents( ANKER.W_D.$NAME.'.txt',BOM.$TXT.'; /*[_END_]/* */' );
return ' ... Datenbank WIKI_create Tabelle der Liste als Input für den UPLOAD '.WIKI_zeit().NL.
'.W_D.$NAME.'.txt ist geschrieben. '.
'Eventuell my_error ... In diesem Fall'.NLBR.
'als Nächstes "2 MySQL-Gestalt" starten in /RUN/ mit der Methode BOOTSTRAP.' .NLBR.
'Test Odysseus = '.WIKI_beschr('Odysseus','BESCHREIBUNG').'
}
function WIKI_gestalt(){ // Tabelle G_LISTE auslesen und W_2 + W_G erstellen
global $link;
$ALLE = []; $MAXI = 0;
$result = mysqli_query($link,$query='select TOT,PERSON,ANZ_R from G_LISTE');
if($result){
$ZEILEN = mysqli_num_rows($result);
if(0==$ZEILEN){
Notice: Keine Einträge in der Tabelle G_LISTE.
'; exit(NL.'Pgm WIKI_Gestalt
'); } while( $zeile = mysqli_fetch_array($result) ){
$ANZ_R = $zeile['ANZ_R'];
$ALLE[$zeile['TOT']] = array($zeile['PERSON'],$ANZ_R);
$MAXI = max ( $MAXI, $ANZ_R);
}
mysqli_free_result($result);
}
$result = mysqli_query($link,$query=
'select TOT,ABC,PERSON,BITMAP,NAME,GRIECHISCH,BKL,ANZ_R,BESCHREIBUNG,NACHWEIS,KBYTE from G_LISTE');
my_error('WIKI_gestalt',$query);
$OUT = BOM.'"Gestalt";"ABC";"TOT";"CP";"Wikipedia";"griechisch";"BKL";"KByte";"Bitmap";"Beschreibung";"Nachweise";'
.'"Anzahl"';
for($I=1;$I<=$MAXI;$I++)
$OUT.=';"Rel. '.$I.'"';
if($result){
$ZEILEN = mysqli_num_rows($result);
if(0==$ZEILEN){
Notice: Keine Einträge in der Tabelle G_LISTE.
'; exit(NL.'Pgm WIKI_Gestalt
'); } while( $zeile = mysqli_fetch_array($result) ){
$CP = html_entity_decode('&#'.($zeile['TOT']+190).';'); // Code-Punkt
$TOT = $zeile['TOT']; // Nummer
$BITMAP = $zeile['BITMAP']; // Relation
$REFE = explode('|',$BITMAP); // Anzahl Erwähnungen in Artikeln
$L = [];
foreach( $REFE as $N => $R) if($R)
if( isset($L[$ALLE[$R][0]]) ) $L[$ALLE[$R][0]]+= $ALLE[$R][1]*2; // $ALLE[$R][0] = Person
else $L[$ALLE[$R][0]] = $ALLE[$R][1]; // $ALLE[$R][1] = relative Bedeutung
arsort($L);
$OUT .= NL.'"'.implode('";"',array_merge(
array($zeile['PERSON'], $zeile['ABC'], $TOT, $CP,
$zeile['NAME'], $zeile['GRIECHISCH'],
$zeile['BKL'], $zeile['KBYTE'], $BITMAP,
$zeile['BESCHREIBUNG'].'|',$zeile['NACHWEIS'],
$zeile['ANZ_R'] ),array_keys($L) ) ).'"';
}
mysqli_free_result($result);
}
if (file_put_contents(ANKER.W_2,$OUT)===false or
file_put_contents(ANKER.W_G,$OUT)===false) return
NL.'Fehler: EXCEL blockiert die Datei "'.W_2.'".';
return ' ... export WIKI_gestalt als CSV-Datei für Download aus Wikipedia '.WIKI_zeit().','.NL.
'.W_2.'
'.NL.'
'.W_G.'.
';}
$TOT = 0; // $TOT = Anzahl Gestalten als Summe über alle Listen
function WIKI_import($NN,$ABC){ // gespeicherte Listen $ABC importieren und W_1 als Gesamtdatei 20x aufbauen
global $TOT; // W_1 = Alle Gestalten
$CSV = $ABC.'.csv';
if(0== $NN){
if(fopen(ANKER.W_1,'w')===false){
echo BR.'Fehler: EXCEL blockiert die W_1 Datei "'.W_1.'", exit.'; return; }
file_put_contents( ANKER.W_1,BOM.'"TOT";"BD";"ABC";"Ros";"R_N";"SP";"OK";"Datum";"R_S";'.
'"Person";"griechisch";"BKL";"Anz_R";"Name";"RE";"Nachweis";"NWS";"Beschreibung";"Tag";'.
'"Relatio";"BITMAP";"kByte"'.NL );
}
if(!file_exists(ANKER.W_0.$CSV))
return;
$DATUM = date ('Y-m-d H:i',filemtime( ANKER.W_0.$CSV ));
$DLM = '";"';
$BKL = $ANZ_R = $kByte = 0; // folgen mit UPDATE aus Wiki-6_Links.csv
$BITMAP= ;
$w1 = fopen( ANKER.W_1,'a'); // append
$lines = file ( ANKER.W_0.$CSV);
foreach ($lines as $N => $ZEILE) if($N){ // ohne Kopfzeile
list($ABC,$NAME,$GRIECHE,$BESCHR,$NACHWEIS) = str_getcsv($ZEILE,';','"');
$NAME = trim($NAME);
$GRIECHE = trim($GRIECHE);
$BESCHR = trim($BESCHR);
$TAG = scan($BESCHR,1,',');
$RELATIO = Rela($BESCHR,$TAG);
$NACHWEIS= trim($NACHWEIS);
$PERSON = LINK_ref($NAME);
list($RE,$Ros,$R_N,$R_S,$NWS) = NWS( $NACHWEIS );
$BD = substr ($R_S,0,1);
$SP = scan ($R_S,2,',- ;');
$IS_OK = SPALTEN($ABC,$Ros,$BD,$R_N,$SP);
$EINTRAG = '"'.($TOT+$N).$DLM.$BD .$DLM.$ABC .$DLM.$Ros .$DLM.$R_N .$DLM.$SP.
$DLM.$IS_OK .$DLM.$DATUM .$DLM.$R_S .$DLM.$PERSON .$DLM.$GRIECHE .
$DLM.$BKL .$DLM.$ANZ_R .$DLM.$NAME .$DLM.$RE .$DLM.$NACHWEIS.$DLM.$NWS .$DLM.$BESCHR.
$DLM.$TAG .$DLM.$RELATIO.$DLM.$BITMAP .$DLM.$kByte .'"';
fwrite($w1,$EINTRAG.NL); // in EXCEL
}
fclose($w1);
$NUM = count($lines)-1;
$TOT += $NUM;
}
function WIKI_kate($LEMMA,$WAS){
global $link;
$OUT = 'Kategorien '.$LEMMA.':';
$result = mysqli_query($link,$query='select KATEGORIE from G_KATEG where PERSON="'.$LEMMA.'"');
my_error('WIKI_kate',$query);
if($result){
$ZEILEN = mysqli_num_rows($result);
if(0==$ZEILEN){
Notice: Keine Einträge in der Tabelle G_KATEG => zuerst "2 MySQL-Gestalt.bat" in /Run/ starten.
';exit(NL.'
Pgm WIKI_kate
'); } else while( $zeile = mysqli_fetch_array($result) )
$OUT .= NLBR.$zeile[0];
mysqli_free_result($result);
}
return $OUT;
}
function WIKI_katego($NAME){ // gültige Kategorien aus LEMMA lesen, in Tabelle $NAME = G_KATEG festhalten
global $ANZ_R, $ANZ_K, $W_KAT, $NKA;
$COLK = array('K_K','TOT','Person', 'NK','BKL','IS_OK', 'Kategorie' );
$COLR = array('K_R','TOT','Person', 'NR','BKL','Referenz','Referenzen' );
$COLT = array('K_T','TOT','Person', 'NT','BKL', 'Titel' );
$COLL = array('K_L','TOT','Person', 'NL','BKL','Anz','Id','Wer', 'Link');
$COLB = array('K_B','TOT','Person', 'NB','BKL', 'Bild' );
$COLC = array('K_C','NK', 'Kategorie','KC', 'Person','TOT','One','KByte');
$PRIM = $COLK[0];
$TXT = '/* '.ANKER.'/DB> mysql l --default-character-set=utf8 -u root --password=xxx < '.$NAME.'.txt'.NL.
BLK3.'hostpoint: phpMyAdmin - SQL-Textdatei laden'.NL.
BLK3.'43 PHP_Pgm.sas / wiki.php'.NL2.
'*/ drop table if exists '.$NAME.'; /*[_END_]/* */'.NL2.
BLK3.'create table ' .$NAME.NL;
$DLM= BLK3.'( ';
foreach($COLK as $C ){
$TXT .= $DLM.sprintf('%-15s',strtoupper($C)).sprintf('%12s',ATTRIB[$C][0]); $DLM = NL.BLK3.', '; }
$TXT .= ' );'.NL2.
BLK3.'alter table '.$NAME.' add primary key ('.$PRIM.');' .NL.
BLK3.'alter table '.$NAME.' add index (TOT);' .NL.
BLK3.'alter table '.$NAME.' add index (PERSON);' .NL.
BLK3.'alter table '.$NAME.' add index (KATEGORIE);' .NL.
BLK3.'alter table '.$NAME.' comment="CREATE '.W_D.BLK.date('Y-m-d H:i').'";' .NL2.
'truncate table '.$NAME.' ; /* erstellt: '.date('Y-m-d').' aus WIKI_katego */'.NL.
'insert '.BLK.' into '.BLK.$NAME.' values /* Spalten-Namen' .NL2.BLK2;
$DLM = ;
foreach($COLK as $C ){
$TXT .= $DLM.sprintf('%-'.ATTRIB[$C][1].'s',strtoupper($C)); $DLM = ','.TAB; }
$TXT .= ' */'.NL2 ;
$O_K = WIKI_kopf(W_K,$COLK); $K_K=0; // Kategorien
$O_R = WIKI_kopf(W_R,$COLR); $K_R=0; // Referenzen
$O_T = WIKI_kopf(W_T,$COLT); $K_T=0; // Untertitel
$O_L = WIKI_kopf(W_L,$COLL); $K_L=0; // Links
$O_B = WIKI_kopf(W_B,$COLB); $K_B=0; // Bilder
$O_C = WIKI_kopf(WCC,$COLC); $K_C=0; // Kate_complet
$DLM = BLK; $D7 = '|';
$DL = '";"'; $ALLE = $A_O= $KATE = [];
$D2 = '",'.TAB.'"'; $dh = opendir(ANKER.W_I); // Verzeichnis /in WIKI/
while(($file=readdir($dh))!==false)
if( substr($file,0,1)!='.' ){
$PERSON = str_replace('.txt',,$file);
$ALLE[$PERSON] = array('TOT'=> WIKI_beschr($PERSON,'TOT'), // vollständig, mit ALLEN Gestalten
'KBYTE'=> WIKI_beschr($PERSON,'KBYTE'), // Grösse des WP Artikel
'ANZ'=> 0,
'MAP'=> ); // WER referenziert darauf
}
rewinddir();
while( ($file=readdir($dh))!==false){
$kByte = filesize(ANKER.W_I.$file);
if( substr($file,0,1)!='.' and $kByte ){
$PERSON = str_replace('.txt',,$file);
$TOT = $ALLE[ $PERSON ]['TOT'];
$TEXT = file_get_contents( ANKER.W_I.$file );
$TEXT = mb_substr( $TEXT,mb_strpos($TEXT,NL) ); // ohne Kopfzeile
if(strpos($TEXT,'
Diese Seite ist eine Begriffsklärung zur Unterscheidung mehrerer mit demselben Wort bezeichneter Begriffe. |
else $BKL =;
$ALLE[ $PERSON ]['kB'] = $kByte;
$BITMAP = ;
$KATEGO = WIKI_referen($TEXT,NL.); // ebenso Normdaten. todo: ! todo: ! todo: ! todo:
$REFER = WIKI_referen($TEXT,NL.'[1]'); // clustern, aber wie ?
$TITEL = WIKI_referen($TEXT,NL.'== ', ' ==');
$LINKS = WIKI_referen($TEXT, '', '');
foreach( $KATEGO as $N => $K ){ // Kategorien
if($K_K>1 and ($K_K-1)%500 ==0){
$TXT .= '; /*[_END_]/* */'.NL2.'insert into '.$NAME.' values'.NL;
$DLM = BLK;
}
$K = trim( $K);
$ISOK = WIKI_KOK($K);
$TXT .= $DLM.'("'.++$K_K.$D2. $TOT.$D2. $PERSON.$D2. $N.$D2. $BKL.$D2. $ISOK.$DL. $K.'")'; $DLM = NL.',';
$O_K .= NL .'"' .$K_K.$DL. $TOT.$DL. $PERSON.$DL. $N.$DL. $BKL.$DL. $ISOK.$DL. $K.'"';
$A_O[] .= str_replace(array('!','| ]]'),array(BLK,']]'),$K);
}
foreach( $REFER as $N => $K ){ // Referenzen
$K2 = str_replace("'",,strip_tags(trim($K)));
$LINK = WIKI_referen($K2,'|',']]');
$K2 = str_replace($LINK,']]',$K2); // yyy entferne |yyy
$O_R .= NL.'"'.++$K_R.$DL. $TOT.$DL. $PERSON.$DL. $N.$DL. $BKL.$DL. trim($K2,BLK.'„([{').$DL .trim($K).'"';
}
foreach( $TITEL as $N => $T ){ // Titel
$T = trim($T);
$LEN = mb_strpos($T,'==',1);
$T = mb_substr($T,0,$LEN+2); // Tippfehler ohne BLK
$ANKE = WIKI_referen($T,'Vorlage:','');
$T = str_replace($ANKE,,$T); // entfernen
$O_T .= NL.'"'.++$K_T.$DL. $TOT.$DL. $PERSON.$DL. $N.$DL. $BKL.$DL. strip_tags($T).'"';
}
$NB = $NL = 0;
foreach( $LINKS as $N => $L ){ // Links und Bilder
$L = trim ( $L );
$WER = LINK_ref( $L );
if( isset($ALLE[$WER]) ){ // also eine GESTALT
$ID = $ALLE[$WER]['TOT'];
++$ALLE[$WER]['ANZ'];
$ALLE[$WER]['MAP'] .= $D7.$TOT;
} else
$ID = ;
if( isset($ALLE[$PERSON]) and $ID){ // also eine GESTALT
++$ALLE[$PERSON]['ANZ'];
$ALLE[$PERSON]['MAP'].=$D7.$ID;
}
$DOT = mb_strpos($L,':');
if( mb_substr($L,0,12)=='[[Kategorie:' )
; // bereits erledigt
else if( $DOT and $DOT<=3 ) // ev. später
; // [[:en:xxx oder [[s: = https://de.wikisource.org/wiki/
else if( $DOT and $DOT<=10 and in_array(mb_substr($L,0,7), // Bilder
array('[[Datei','[[Bild:','[[File:','[[Image','[[Porta')) ){
$O_B .= NL.'"'.++$K_B.$DL. $TOT.$DL. $PERSON.$DL .++$NB.$DL .$BKL.$DL .$L.'"';
} else { // Links
if($NL == 0){ $ANZ ='$#'; $BKK =$BKL;} // $ALLE[$PERSON]['ANZ']
else { $ANZ = ; $BKK = ; }
$O_L .= NL.'"'.++$K_L.$DL .$TOT.$DL .$PERSON.$DL .++$NL.$DL .$BKK.$DL .$ANZ.$DL .$ID.$DL .$WER.$DL .$L.'"';
// 0 1 2 3 4 5 6 7 8
}
} // foreach
} // if($zeile)
} // while
closedir($dh);
$ELE = explode(NL,$O_L);
$UPD = BOM.'/* mit BOM, erstellt am '.date('Y-m-d H:i:s').' mit Programm WIKI_katego in "wiki.php"'.NL.
BLK3. 'Aufruf mit Browser: localhost / wiki.php */'.NL;
$ANZ_R = 0;
foreach($ELE as $N => $E) // update Liste der Gestalten
if( strpos($E,'$#') ){
$P = explode($DL,$E);
$P[5] = $ALLE[$P[2]]['ANZ']; // Anz_R
$ELE[$N] = implode($DL,$P);
if($P[4]!= 1) $P[4] = 0; // BKL
$ANZ_R += $P[5];
$UPD .= NL.'update G_LISTE set BKL='.$P[4].', ANZ_R='.sprintf('%4d',$P[5]).
', kByte='.sprintf('%7d',$ALLE[$P[2]]['kB']).
', BITMAP="'.trim($ALLE[$P[2]]['MAP'],'|').'" '.
' where G_LISTE.TOT='.sprintf('%5d',$P[1]).' limit 1; /* '.sprintf('%-35s',$P[2]).' */';
}
$OUT = implode(NL,$ELE); // update mySQL G_Liste
sort($A_O);
$A_O = array_unique($A_O); // Kateg_all
$O_A = BOM.'"Kategorie_all";"IS_OK";"Kurz"';
$NKA = 0;
$LAST=;
foreach( $A_O as $N => $E){
$LINK = LINK_ref( $E ); // x statt y
$KURZ = mb_substr($LINK,10); // ohne "Kategorie:"
$ISOK = WIKI_KOK( $E );
$O_A .= NL.'"'.$E.$DL.$ISOK.$DL.$KURZ.'"';
if($ISOK==1){
$ANZ = WIKI_LEMKA('Kategorie:'.$KURZ, 1); // Inhalt einer Kategorie als *.txt speichern
if($LAST!=$KURZ) $W_KAT .=
$KURZ.'</a>'.$ANZ.'Kategorie';
$LAST = $KURZ;
}
}
$dh = opendir(ANKER.W_C); // aus dem Verzeichnis /Kategorie/
while(($file=readdir($dh))!==false)
if( substr($file,0,1)!='.' ){
$ANZ_K++;
$TEXT = file_get_contents(ANKER.W_C.$file);
$KATE = explode(NL,$TEXT);
foreach( $KATE as $N => $K){
$ELE = explode(TAB,$K);
$PERSON = $ELE[2];
if(isset($ALLE[ $PERSON ])){ $TOT=$ALLE[ $PERSON ]['TOT']; $KBYTE=$ALLE[ $PERSON ]['KBYTE'];
} else { $TOT=; $KBYTE=; }
if($ELE[1]<0) $ONE =; // Unterkategorie
else $ONE = 1; // Element bzw. Gestalt
$KATE[$N] = '"'.++$K_C.$DL.$ANZ_K.$DL.str_replace(TAB,$DL,$K).$DL.$TOT.$DL.$ONE.$DL.$KBYTE.'"';
}
$O_C .= NL.implode(NL,$KATE);
}
file_put_contents( ANKER.W_A, $O_A);
file_put_contents( ANKER.W_K, $O_K);
file_put_contents( ANKER.W_R, $O_R);
file_put_contents( ANKER.W_T, $O_T);
file_put_contents( ANKER.W_L, $OUT);
file_put_contents( ANKER.W_U, $UPD);
file_put_contents( ANKER.W_B, $O_B);
file_put_contents( ANKER.WCC, $O_C);
file_put_contents( ANKER.W_D. $NAME.'.txt', // Verzeichnis /Datenbank/ mit der neuen Tabelle $NAME = G_KATEG.txt
BOM.$TXT.'; /*[_END_]/* */' );
}
function WIKI_KOK($E){
$KURZ = mb_substr(LINK_ref($E),10); // ohne [[Kategorie:
if( in_array($KURZ,KATEG) or (stripos($E,'myth')!==false) ) $ISOK= 1 ;
else $ISOK='.';
if( stripos($E,'römi') !==false or stripos($E,'finni')!==false or
stripos($E,'etrusk')!==false or stripos($E,'irani')!==false)$ISOK='.';
return $ISOK;
}
function WIKI_kopf($DATEI,$COL){ // Kopfzeile schreiben
if( fopen(ANKER.$DATEI,'w')===false )
echo BR.'Fehler: EXCEL blockiert die Datei "'.$DATEI.'", exit.';
else
return BOM.'"'.implode('";"',$COL).'"';
}
function WIKI_LEMKA( $LEMMA, $LEV ){ // eine Kategorie als formatierte Textdatei speichern
global $W_KAT, $NKA;
if($LEV>1){ $LEMMA = RE_2(BLK,$LEMMA);
$DET = '_'.$LEV;
$FNAME = scan( $LEMMA,1,'&');
} else { $DET = ;
$FNAME = $LEMMA;
}
$FILE = ANKER.W_C.FileWindows($FNAME).$DET.'.txt'; // Windows Filename ohne :
if($DET){
$TEXT = WIKI_lesen($LEMMA,'katego'); $NEW=1; // Kategorie:Person_der_griechischen_Mythologie&pagefrom=Amphilochos+%28Sohn+des+Dryas%29
} else if(file_exists($FILE)){
$TEXT = file_get_contents( $FILE ); $NEW=0; // File ist bereits lokal gespeichert !
} else {
$TEXT = WIKI_lesen($LEMMA,'katego'); $NEW=1; // Kategorie aus WP lesen
}
$LENG = mb_strlen($TEXT);
if( !$LENG or strpos($TEXT,'Diese Seite existiert nicht')!==false ){
file_put_contents($FILE,);
return 0;
}
$NEXT = strrpos($TEXT,'>nächste Seite</a>)');
'),NL.'.') ); // Kategorie mit Inhalt
// echo NLBR.'Hallo:'.$LEV.BLK.urldecode($LEMMA); // Debug
$NN = $KK = 0;
if($NEW){
foreach( $KATE as $N => $K){
$ID = mb_strpos($K,'
');
if($ID!==false)
$KATE[$N] = mb_substr($K,0,$ID).mb_substr($K,strpos($K,'
')+5); if($DET and strpos($KATE[$N],'►')!==false)
unset($KATE[$N]);
else if(trim($KATE[$N])!= and !in_array(mb_substr($KATE[$N],0,9),
array('Seiten in','Folgende ','Unterkate','Diese Kat','Es werden',
'(vorherig','Inhaltsve')) and mb_substr($KATE[$N],1,8)!='Commons:' ){
if(strpos($KATE[$N],'►')!==false ) $NUM = --$KK ;
else $NUM = ++$NN + 200*($LEV-1);
$KATE[$N] = $FNAME.TAB.$NUM.TAB.$KATE[$N];
} else unset($KATE[$N]);
}
file_put_contents($FILE, implode(NL,$KATE) );
if($NEXT){
$ANF = strrpos($TEXT,'<a href=');
$NEW = WIKI_token(substr($TEXT,$ANF),'title=','#mw-pages',-1);
// echo NLBR.'Next:' .$NEXT.', Len:'.strlen($TEXT).', Anf:'.$ANF.NLBR.'Hallo:'.$NEW .NL; // Debug
$ANZ = WIKI_LEMKA($NEW, ++$LEV);
'<a href="https://de.wikipedia.org/w/index.php?title='.str_replace('&','&',$NEW).'#mw-pages" target="new">'.
}
// https://de.wikipedia.org/w/index.php?title=Kategorie:Person_der_griechischen_Mythologie&pagefrom=Amphilochos+%28Sohn+des+Dryas%29#mw-pages
}
return count($KATE) + $KK;
}
function WIKI_LEMMA( $LEMMA){ // ein LEMMA lokal als Textdatei speichern, wie eine Standarseite im eLexikon
$FILE = ANKER.$PFAD.FileWindows($LEMMA).'.txt'; // Windows ohne : im Filename
if( file_exists ( $FILE) ) // File ist bereits lokal gespeichert !
return 0;
$TEXT = WIKI_lesen($LEMMA,'edit'); // Text zum Artikel lesen
$LENG = mb_strlen( $TEXT );
if( !$LENG or strpos($TEXT,'Diese Seite existiert nicht')!==false ){
file_put_contents($FILE,);
return 0;
}
$ELEM = WIKI_Version($LEMMA,);
$REFE = WIKI_referen($TEXT,'[2]');
file_put_contents($FILE,
BOM.'WikipediA @ eLexikon.ch $ mod='.$ELEM[0][3].BLK.$ELEM[0][2].' $ by'.$ELEM[0][4].' $ size='.$ELEM[0][5].BLK.$ELEM[0][6].
' $ '.$LENG.' mb_char $ down='.date('Y-m-d H:i:s').' $ note='.$ELEM[0][7].
NL2.$LEMMA.
NL2.str_replace($REFE,'<rr>',$TEXT).NL.
'$$$ https://de.wikipedia.org/w/index.php?title='.RE_B($LEMMA).'&action=edit $ Aufgaben/in WIKI/*.txt'.NL.
array_TXT($REFE, NL) );
return 1;
}
function WIKI_lesen( $LEMMA, $ACTION ){ // LEMMA in WP lesen mit 'edit','history','katego'
global $RE_N;
switch( $ACTION ){
case 'edit' : $VON='<textarea'; $BIS='</textarea>'; $TOK=-1; $TAG=; break; // $TOK=1 ??
case 'RE_edit' : $VON='<textarea'; $BIS='</textarea>'; $TOK=-1; $TAG=; break;
'; $BIS='Abgerufen'; $TOK=-1; $TAG='
<a>'; break;
case 'RE_kat' : $VON='
'; $BIS='';$TOK=-1; $TAG=; break;
case 'RE_korr' : $VON=''; $BIS='';$TOK=-1; $TAG=; break;
case 'Redirect': $VON=''; $BIS='';$TOK=-1; $TAG=; break; }
$INP = file_get_contents( $GET = WIKI_URL($LEMMA,$ACTION) );
if(in_array( $ACTION, ['RE_kat','RE_korr','Redirect']) ){
$TEMP = mb_substr($INP, mb_strpos($INP,'vorherige Seite'));
if($B = mb_strpos($TEMP,'#mw-pages') ) // %0A = NL, %3A = :
$RE_N = mb_substr( $TEMP, $A = (mb_strpos($TEMP,'pagefrom=')+9),$B-$A);
else { // $RE_N=
echo NLBR.'WIKI_lesen '.$ACTION.': Bruch $RE_N=="" @ '.urldecode($LEMMA).NL;
// $RE_N = mb_substr( $TEMP, 0, mb_strpos($TEMP, '&' ) );
}}
$INP = WIKI_token($INP,$VON,$BIS,$TOK);
if($TOK<0) $INP = str_replace(['
['
'.NL.'
if($ACTION=='RE_edit')
$INP = mb_substr($INP,mb_strpos($INP,'>')+1);
return html_entity_decode( strip_tags($INP,$TAG), ENT_QUOTES|ENT_XML1, UTF8); // <textarea> < $
}
function WIKI_liste( $TEXT,$DATEI ){
global $ANZ_R, $ANZ_K ;
if($DATEI==W_U) $ANZ = $ANZ_R; else
if($DATEI==W_C) $ANZ = $ANZ_K; else
$ANZ = count(file(ANKER.$DATEI))-1;
}
function WIKI_read($NN,$ABC){ // W_0 Liste der Gestalten LDG schreiben
global $BYTE;
$Band = ROSCH[ $ABC ];
$FILE = ANKER.W_0.$ABC.'.csv';
if( file_exists(ANKER.W_0.$ABC.'.csv') ){ // mit oder ohne ONLINE Zugriff auf Wikipedia
$L3 = filesize($FILE);
} else {
$INP = WIKI_lesen( LDG.'/'.$ABC, 'edit');
$INP = WIKI_token($INP,'|Nachweise','[[Kategori',-1);
$INP = str_replace(array('/mode/1up','','','|}',"'"."'"), // = kursiv in Wiki
, strip_tags(html_entity_decode($INP)) ); // alles ohne Information
$INP = str_replace(array('http://archive.org/stream/Roscher/Roscher' .$Band[0]. '#page/',
'http://www.archive.org/stream/Roscher/Roscher' .$Band[0]. '#page/',
'http://www.archive.org/stream/roscher1/Roscher'.$Band[0]. '#page/',
'http://www.archive.org/stream/ausfhrlicheslexi'.$Band[1].'rosc#page/',
'http://www.archive.org/stream/ausfhrlichesle' .$Band[1].'rosc#page/',
'http://www.archive.org/stream/ausfhrlichesle' .$Band[2].'rosc#page/',
'http://www.archive.org/stream/ausfhrlichesle' .$Band[1].'roscuoft#page/'),
array('Ro ','Ro ','Ro ','fh ','fh ','fh ','fh '), $INP );
$INP = str_replace(array('|-'.NL.'| ',NL.'|'),
array( BR , '";"'),$INP); // Wiki => CSV
$L3 = mb_strlen($INP);
$OUT = trim(str_replace(NLBR,
'"'.NL.'"'.$ABC.'";"', $INP));
file_put_contents($FILE, BOM.'"ABC";"Name";"griechisch";"Beschreibung";"Nachweise'.$OUT.'"');
}
$BYTE += $L3;
$SEITE = SPALT[$ABC][0] + floor( (1+SPALT[$ABC][1])/2 );
''. $ABC .
'<a href="http://archive.org/stream/Roscher/Roscher'.$Band[0].'#page/n'.$SEITE.
'/mode/1up">'.$Band[0].'</a>'.
''.(1+$SEITE).
''.sprintf("%6s",number_format($L3/1024,1,',',"'")).
''.NL;
}
function WIKI_referen( $TEXT,$VON,$BIS){ // alle Tags auslesen, die mit $VON und $BIS eingeklammtert sind
$ELE = explode($VON,'$'.$TEXT);
unset($ELE[0]);
foreach( $ELE as $N => $E){
$POS = mb_strpos( $E,$BIS );
if($POS!==false ) $ELE[$N] = str_replace(NL,BLK, $VON.mb_substr($E,0,$POS).$BIS );
else unset($ELE[$N]); }
return $ELE;
}
function WIKI_run($MAX){ // $MAX neue LEMMA-ta lesen
global $link;
set_time_limit( (int)$MAX*3 );
$result = mysqli_query($link,$query='select PERSON from G_LISTE');
my_error('WIKI_run',$query);
$OUT = ; $NN = $II = $EE = $FF = $GG = $BKL = 0;
if($result){
$ZEILEN = mysqli_num_rows($result);
if(0==$ZEILEN){
echo NL.'
Notice: Keine Einträge zu PERSON in der Tabelle G_LISTE.
'; exit(NL.'Pgm WIKI_run
'); } else if(1)
diese Verarbeitung erfolgt hier OFFLINE, ohne Zugriff auf Wikipedia.';
else while( $NN<$MAX and $zeile=mysqli_fetch_array($result) ){ $II++;
if($NEW = WIKI_LEMMA($zeile[0]) ){
$DAUER = substr(dauer(TIM),7);
$OUT .= trim(scan($DAUER,1,'='),' ec').', '.(++$NN).'+ '.$zeile[0].', '.WIKI_beschr($zeile[0],'BESCHREIBUNG').NLBR;
} else if( !file_exists(ANKER.W_I.$zeile[0].'.txt') )
$OUT.= dauer(TIM).' ?+ '.$zeile[0].' F E H L T'.NLBR; }
mysqli_free_result($result);
clearstatcache(); }
$ELIM = WIKI_referen($OUT,'|','');
$OUT = str_replace($ELIM,'',$OUT).'
' ... Statistik zur '.LDG.', '.date('d. M. Y').BLK.WIKI_zeit().':';
$dh = opendir(ANKER.W_I); // Verzeichnis /in WIKI/
while( ($file=readdir($dh))!==false)
if( substr($file,0,1)!=='.' ){
if( filesize(ANKER.W_I.$file) ) $FF++; else $EE++; // Anzahl echte Files, lokal gespeichert
if(strpos(file_get_contents( ANKER.W_I.$file ),
'
Diese Seite ist eine Begriffsklärung zur Unterscheidung mehrerer mit demselben Wort bezeichneter Begriffe. |
closedir($dh);
$dh = opendir(ANKER.W_V); // Verzeichnis /Version/
while( ($file=readdir($dh))!==false)
if( substr($file,0,1)!=='.' ) $GG++; // Anzahl echte Files, lokal gespeichert
closedir($dh);
return
'.
NL. ''.$ZEILEN .' Gestalten sind in dieser Liste (= Lemmata), davon'.
NLBR.''. $II .' online geprüft. In Summe sind'.
NLBR.''. $FF .' Seiten erstellt mit konkretem Inhalt, dazu'.
NLBR.''. $GG .' verfügbare Versionsgeschichten mit einer History. Die Differenz ist '.
NLBR.''. ($GG-$FF) .' gelöschte(r) Artikel. Über '.
NLBR.''. $BKL .' identifizierte Begriffsklärungen sind'.
NLBR.''. $EE .' Seiten geplant, aber noch nicht erstellt. Das sind leere Files im Verzeichnis'.
'/in WIKI/ ohne Versionsgeschichte in /Wikipedia/Version/ sowie'.
NLBR.''.($ZEILEN-$FF-$EE).' nicht eindeutig bezeichnete Gestalten in der Liste, '.
'inkl. Begriffsklärungen '.WIKI_zeit().'.
}
function WIKI_token($INP,$VON,$BIS,$N ){ // Token aus TEXT
$L1 = mb_strpos( $INP,$VON); // $N: mit oder ohne die beiden Tags
$L2 = mb_strpos( $INP,$BIS,$L1);
if($L1===false or $L2 <= $L1) // das Anfangs- oder das End-Tag fehlt
return ;
if($N<0) $L1 += mb_strlen($VON); // $N<0: ohne Anfangs- und End-Tag
else $L2 += mb_strlen($BIS); // else: mit ...
$INP = mb_substr($INP,$L1,$L2-$L1);
if($N>0) $INP = str_replace(NL,BLK,$INP ); // $N>0: NL => BLK
return $INP;
}
function WIKI_URL( $LEMMA, $ACTION ){ // zu einem LEMMA die korrekte URL bilden
$WIKIND = WS.'w/index.php?title=';
if($ACTION=='RE_korr' ) return $WIKIND.'Kategorie:RE:Korrigiert&from=' .$LEMMA;
if($ACTION=='RE_kat' ) return $WIKIND.'Kategorie:'.PAULY2 .'&from='.$LEMMA;
if($ACTION=='Redirect' ) return $WIKIND.'Kategorie:RE:Redirect&pagefrom='.$LEMMA;
if(strpos($LEMMA,'&page') and $ACTION=='katego') // Kategorie (nächste Seite) &pagefrom=
return $WIKIND.RE_B($LEMMA).'#mw-pages';
if(substr($ACTION,0,2)=='RE' or substr($LEMMA,0,3)=='RE:' or strpos($LEMMA,'cyclopädie')!==false)
$URL = WS; else $URL = 'https://de.wikipedia.org/';
$LEMMA = str_replace( BLK,'_', LINK_ref($LEMMA) ); // $ACTION = edit / exist / history / katego
if( $ACTION=='RE_edit' ) $ACTION = 'edit';
if( $ACTION=='RE_def' ) $ACT = ;
else if( $ACTION=='RE_weiter') $ACT = '&redirect=no';
else $ACT = '&action='.$ACTION;
if( in_array($ACTION, ['exist','katego','RE_def']) and substr($LEMMA,3) == 'RE:' )
$URL .= 'wiki/RE:'.str_replace('?','%3F',urlencode(substr($LEMMA,3) ));
else $URL .= 'w/index.php?title='. urlencode( $LEMMA ).$ACT;
return $URL;
}
function WIKI_Version ( $LEM, $ABC ){ // W_S history = Versionen eines LEMMA einlesen oder schreiben
if($ABC==){$LEMMA= $LEM; $FILE= W_V. $LEMMA.'.csv' ;}
else {$LEMMA= $LEM.'/'.$ABC; $FILE= W_S.str_replace('/','-',$LEMMA.'.csv');}
if( file_exists( ANKER.$FILE) ){ // nur aktualisieren, wenn nötig
$lines = file(ANKER.$FILE);
foreach ($lines as $N => $ZEILE) if($N) // ohne Kopfzeile
$ELE[$N-1] = explode('";"',trim($ZEILE,'"'.NL));
return $ELE;
}
$OUT = ; $DLM = '; ';
$INP = WIKI_lesen( $LEMMA, 'history');
if( !$INP ) return;
$INP = str_replace(array(BLK3,BLK2,';','"','AktuellVorherige',' Diskussion',' Beiträge','rückgängig','[automatisch gesichtet]'),
array(BLK, BLK, ',',"'", , $DLM, , , ),
trim($INP) );
$ELE = explode(NL,$INP);
foreach($ELE as $N => $E ){
$D1 = 0;
for( $I=1; $I<=4; $I++ )
$D1 = strpos($E,BLK,$D1+1);
$E = substr($E,0,$D1).$DLM.substr($E,$D1);
$E = substr($E,1, 5 ).$DLM.substr($E,7);
$D1 = strpos($E,'Bytes')+7;
$D1 = strpos($E,BLK,$D1);
$E = substr($E, 0 ,$D1).$DLM.substr($E,$D1);
$E = $LEMMA.$DLM.$N.$DLM.str_replace(' Bytes ',$DLM,$E);
$OUT.= '"'.str_replace($DLM,'";"',$E).'"'.NL;
if($N==0) $ELEM[0] = explode($DLM,$E);
}
file_put_contents( ANKER.$FILE,
BOM.'"LEMMA";"N";"Zeït";"Datum";"Autor";"Umfang";"Delta";"Zusammenfassung"'.NL.$OUT );
return $ELEM;
}
function WIKI_zeit(){
return '('.trim(scan(dauer(TIM),1,'=')).')';
}
/* //----------------Liste der Gestalten ------------------------
head('+ 9_WIKI_Rohdaten', , );
$RNN = 10;
echo NL.'<style>table,th,td {text-align:right}</style>';
$LOG = NL.BR2.NL.
Stammbaum zur griechischen Mythologie
'.NL2.'
'
Programm: "localhost/meyers/Admin/code/wiki.php" aus "43 PHP_Pgm.sas" per '.date('Y-m-d H:i:s.').' mit Zugriff auf die <a href="'.
'https://de.wikipedia.org/wiki/Liste_der_Gestalten_der_griechischen_Mythologie/A">Liste der Gestalten</a>.
NL2.
''.NL.
'</thead><tbody>'.NL;
$NEW = $W_KAT = ;
$BYTE = $ANZ_R = $ANZ_K = $NKA = 0;
foreach (BUCH as $N => $ABC)
$NEW.= WIKI_read($N,$ABC); // LDG lesen
if($NEW==)
$LOG.= $NEW.
'</tbody><tfoot>'.NL.
'</tfoot>
N | ABC | Band | Spalte | Seite | kByte | |
---|---|---|---|---|---|---|
Keine Daten gefunden | ||||||
Σ | '.sprintf("%6s",number_format($BYTE/1024,1,',',"'")).' |
NL2.
''.
''.NL.
'</thead><tbody>' .NL;
foreach (BUCH as $N =>$ABC){
$ELEM = WIKI_Version(LDG,$ABC);
if(count($ELEM) and isset($ELEM[0]) and count($ELEM[0])>=7 )
$LOG.=''.
''.NL;
else $LOG.=''.NL;
}
$ELEM= WIKI_Version(LDG,);
$LOG.= '</tbody><tfoot>'.NL.
''.NL.
''.
''.
''.NL.
'</tfoot>
ABC | Gestalten | Datum | Zeit | Autor | Delta | Bemerkung |
---|---|---|---|---|---|---|
'.BLK_fix($ELEM[0][3]).' | ' .$ELEM[0][2] .' | '.BLK_fix($ELEM[0][4]).' | '.$ELEM[0][6] .' | '.str_replace('ELexikon','Hug',$ELEM[0][7]).' | ||
Σ | '.$TOT.' | '.date('d. M. Y').' | '.W_1.' | |||
Einleitung | '.$ELEM[0][3] .' | ' .$ELEM[0][2] .' | '.$ELEM[0][4].' | '.$ELEM[0][6] .' | '.$ELEM[0][7] .' |
WIKI_create ('G_LISTE').NL2.BR.
WIKI_gestalt( ).NL2.BR.
' ... mit WIKI_run aus Wikipedia bis zu '.$RNN.' neue Seiten lesen ' .WIKI_zeit().','.NL.
'.
WIKI_run ( $RNN ).NLBR.
WIKI_katego ('G_KATEG').
' ... nach WIKI_katego existieren bei den rund 3`200 Gestalten mit einer Seite '.WIKI_zeit().':'.NL2.
'
'<thead>'.
'</thead><tbody>'.NL.
WIKI_liste(' 4`900
gefundene | tags in den WP-Seiten | Zeilen | Datei | |||||
---|---|---|---|---|---|---|---|---|
', W_K). WIKI_liste(' 700 | Kategorie:Gestalt der griechischen Mythologie',W_A). WIKI_liste(' 100 | davon relevante Kategorien IS_OK', W_C). WIKI_liste(' 4`500 | Gestalten in einer Kategorie', WCC). WIKI_liste(' 8`900 | <ref> Einzelnachweise </ref>',W_R). WIKI_liste(' 7`000 | == Untertitel ==', W_T). WIKI_liste('72`000 | mit Text', W_L). WIKI_liste('44`000 | Links innerhalb der Gestalten', W_U). WIKI_liste(' 1`400 | mit Illustration', W_B). $W_KAT. |
'... jetzt mit 2 MySQL-Gestalt.bat aktualisieren via '.W_U.'.'.NL2;
echo $LOG.
'.date('H:i:s').' Ende Wiki, ' .dauer(TIM).'
'.NL.'
'</body></html>'.NL;
$PGM = file(ANKER.AdminC.'wiki.php');
$SAS = 6178; // Zeile im Code
foreach( $PGM as $N => $P )
$PGM[$N] = ($N+1).' / '.($SAS+$N).': '.BLK.trim($P);
file_put_contents( ANKER.'/Aufgaben/Configuration/Runlog/a Wikipedia '.date('Y-m-d').'.txt',
strip_tags(str_replace(array('<th','<td'),TAB.'<x',$LOG)).NL.
trim(array_TXT($PGM,NL)) );
- / ?>
data _null_; /* wikiRE.php */
%PHPCODE( "&DDNAM.www/meyers/Admin/code/wikiRE.php", SPACE=YES );
datalines4;
<?php // Zeile = 1273-1
function RE_Starter ( $TODO ){ // $TODO = 0 = Abbruch
echo RE_Anfang ( 0 ); // 0/1 = IS_PHP_D Details + <html><head>...
echo RE_2mySQL(0,'LONG','Groessere_Art',); // 0/1 = off/on, Test-Beispiel für RE_2mySQL
echo RE_Codierung ( ); // utf-8? BLK = Diskussion:RE-Werkstatt/Pipeline
echo RE_crop ( 0 ); // aus einem Bild etwas ausschneiden
echo RE_csv2wp (,';' ); // aus *.csv ins Wikipedia Format, (_Wiki, CSV/';' )
echo RE_GALERY ( 0 ); // Schnittstelle zur Bildergallerie auf eLexikon.ch
echo RE_JSON (0,'wikidata-lexemes.json'); //
echo RE_PNG ( 0 ); // das Grafikformat *.tiff auf *.png wechseln
echo RE_REN ( 0 ); // rename für viele Files *.txt
echo RE_siehe_R ( 0,'$' ); // 0/1 = copy on/off, Lemma/$ = Mängel R-Text:$JSON-Register?
echo RE_Statist ( 0 ); // nix
echo RE_Tidy (0,,'a_tiny.txt'); // HTML ok? Filename in _Wiki, siehe RE:Barlaam 1
echo RE_var_port (2,['x']); // 2 = Output RE-7, 'PHILO' = globaler Array
echo RE_Wikidata ( 0 ); // Anlayse
// ab hier => exit
echo RE_NACHWEIS ( $TODO,'RE:Aemilianus 1'); // leer = alle Nachweise 20 min = 1'013'000 Zeilen
echo RE_ABKURZ ( $TODO ); // /Admin/code/Philol.php ++ => :ws/Alle Abkürzungen
echo RE_GROS ( $TODO ); // Grosse Artikel
echo RE_Alle_Gly ( $TODO ); // Alle Glyphen aufzählen
echo RE_Alle_Zch ( $TODO ); // Alle Zeichen der RE zählen
echo RE_AutorWERK ( 0 ); // RE-0_Autoren+Werke_1.csv => /Admin/code/ALLaaw.php =WP:Liste
echo RE_DKP ( 0 ); // RE-0_DKP-Abkürzungen.txt => /Admin/code/DerKleinePauly.php
echo RE_Doppel ( 0 ); // Die Reihenfolge ist $ALLaaw+$DKP+$ALLart+$ALLart2+$PHILO2
}
function RE_finish ( $TODO ){ // Programme, die am Schluss laufen
if(!$TODO ) return;
return RE_Source ( $TODO ). // Source Code konsolidieren
RE_Artikel_n ( 0 ). // Register-Stammdaten für neue Lemma
RE_THEbotIT ( 0,0 ). // Logfile einlesen ($OPT, $TODO)
'.date('H:i:s').' / Ende Wiki_RE am '.date('Y-m-d').
', '.dauer(TIM).'
}
define( 'AdminC', '/www/meyers/Admin/code/');
require_once 'C:/Users/info/Documents/www/meyers/code/Include.php'; // ANKER definieren
require_once ANKER.AdminC.'compress_func.php';
require_once ANKER.AdminC.'wiki.php';
define( 'IS_R', false ); // $BAND=='R'
$DATE_von = '2023'.'0815';
$DATE_von = date("Ymd", filemtime( ANKER.R_R.'RE-4_Edit-Info_V1.csv') ); // Tag mit letztem crawl
define( 'RUN', $DATE_von < date("Ymd") or 0 ); // RUN ist am Morgen
define('RE_Spez_Lemma', NL. /* .csv File Scan Seite */
'RE:Vorwort (Band I)' .';P_010002.png; III'.NL. // 1
'RE:Abkürzungen' .';P_010008.png; XV'.NL. // 2
'RE:Mitarbeiter-Verzeichnis (Band II)' .';P_040002.png; I'.NL. // 3
'RE:Verzeichnis der Mitarbeiter nach dem Stand vom 1. Mai 1913;P_160001.png; III'.NL. // 4
'RE:Register (Band XI)' .';P_220314.png;2529'.NL. // 5
'RE:Register (Band XV)' .';P_300308.png;2521'.NL. // 6
'RE:Wilhelm Kroll †' .';P_350001.png; I'.NL. // 7
'RE:Register (Band XXIII)' .';P_460314.png;2521'.NL. // 8
'RE:Vorwort (Supplementband I)' .';PS010001.png; III'.NL. // 9
'RE:Abkürzungen (Supplementband I)' .';PS010003.png; III'.NL. // 10
'RE:Alfred Druckenmüller †' .';PS110001.png; I'.NL. // 11
'RE:Konrat Ziegler †' .';PS160003.png; I'.NL. // 12
'RE:Vorwort (Register)' .';PS160011.png; XXI'.NL. // 13
'RE:Vorbemerkung (Register)' .';PS160012.png; 1'.NL. // 14
'RE:Benutzungshinweise (Register)' .';PS160013.png; 2'.NL. // 15
'RE:Verzeichnis der Autoren (Register)' .';PS160014.png; 3' ); // 16 =: N_Spez_L
define('N_Spez_L',count(explode(NL,RE_Spez_Lemma))-1);
require_once ANKER.AdminC.'ALLaaw.php' ; // $ALLaaw w:Abk.+Werke
require_once ANKER.AdminC.'ALLart2.php' ; // $ALLart2 700/1700 Lemma
require_once ANKER.AdminC.'ALLbox.php' ; // $ALLbox 10'000 Infobox
require_once ANKER.AdminC.'ALLjosef.php'; // JKrieg, JAnt, RE_JKJA()
require_once ANKER.AdminC.'ALLweit.php' ; // $ALLweit = Weiterleitng
require_once ANKER.AdminC.'DerKleinePauly.php'; // $DKP =
require_once ANKER.AdminC.'Philol.php' ; // $PHILO =
if(file_exists( ANKER.AdminC.'ALLart.php')){ // $ALLart = 100'000
require_once ANKER.AdminC.'ALLart.php' ; // RE_Mehrfach
$FULL=explode(NL,file_get_contents(ANKER.AdminC.'ALLart.php'));} // Bootstrap
else $FULL= $ALLart = [];
define('OHNE',['Aktion','Alex','Ar','Ἀθηναιών','Alla','Atrytone',
'Basel','Bell','Bis','Bordeaux','Brief','Buche',
'Cal.','Cornelius','Diana','Echon','Ehe','El','Eos','Er','Ex','Fabia','Flaviae',
'Fluß','Germ','Germanos','Gott','Hin','Igel','Indus','Index',
'Jahr', 'K','L. 1','La','Lat.','Leben','Legion','Lex','Liber','Liste','Lix',
'Maked','Maße','Megas','Men','M. 1','Met','Metellus','Monat','Monate','Mühle','Mut',
'Neue','Nun',
'Oe','Or','Ortes','Pall','Paris','Ptolemaios','Re','Res','Rom','Romanos',
'Schrift','Scipio','Si','Sil.','Silv.','Sk','Soc.','St. 1','Stock',
'Tages','Tan','Tur','Tus','Ver','Vir','Vol','Vorbemerkung','Vorwort','....']);
define('OHN2',['Aphrodisias','Argos','As','Atticus','Auch','Auto', // Acta,
'Bes','Blitz','Bonn','Brot','Buch','Claudius','Cornelius',
'Dia','Epiklesis','Gaius','Ge','Griechen','Ham','Ionien','Iulia',
'Karien','Knidos','Köln','Korinth','Leo','London','Los','Lykien',
'Mainz','Male','Mel','Mus','Nymphe','Paulus','Pollus','Recht','Register','Rhetor',
'Scheidung','Schrift','Sitten','Sol','Statue','Straßburg','Sueton','Sulla','Syn',
'these','Tinos','Turin','Val.','Vas','York']); // Oder, Stein
define('JOSCA',);
define('JOSJA',);
define('JOSJK',);
define('EC_' ,'________ / ');
foreach( OHNE as $LEM )
if( isset($ALLart[$LEM])) unset( $ALLart[ $LEM], $ALLart2[$LEM] ); // unset RE:xy
else echo NLBR.'$ALLart Fehler unset(): ' .$LEM ;
$ISOK = 0; $PHILO2 = $OPTI = $ALLw = $ISDONE = [];
foreach ( $FULL as $LINE ){ // $OPTI[] = Kurztext = $ARTI['opti']
$KEY = scan($LINE,1,"'"); $TXT = trim( scan( $LINE,2,'$') );
if($KEY!=$TXT) $OPTI[$KEY] = $TXT; // Latein ergänzen
if( hat_greek ($KEY) and !isset( $ALLweit[$LATI =to_latein($KEY)])) // Athe... => Ἀθη...
$ALLweit[$LATI]= $KEY; }
foreach($ALLweit as $KEY => $W ) // Weiterleitung als WS-Link
if(isset($ALLart[$W]) )
$ALLwei2[ $KEY ] = ''.$KEY.'';
else if(0 and $W!='Redirect' and strpos($W,'#') === false ) // 3x: Ἀθηναιών, Ῥύμμοι, ...
echo NLBR.'$ALLweit Irrtum: '.$KEY.' => '.$W;
foreach($ALLart+$ALLweit as $KEY => $W ) // Artikel oder Weiterleitung
if( !isset($ALLart[$KEY.' 1']) and
!isset($ALLart[$KEY.' a'])) // RE:Antonius ist unerwünscht
$ALLw['RE:' .$KEY]='a'; // aktiv
unset ( $ALLw['RE:K'], $ALLart['K'] ); // ohne RE:K
foreach($PHILO as $KEY => $TXT){ $OPT=; // Z i m m e r und Z i m m e r s
$TXT = str_replace(,,$TXT);
$PHILO2 [$KEY] = $TXT ;
if( strpos( $TXT, ;
else if( substr($TXT,-2)==']]' and substr($TXT,0,5)!=='[[RE:' )
$PHILO2 [$KEY] .= ;
else $PHILO2 [$KEY] .= ; }
if( $ISOK and substr($KEY,-1)!='.' ){ // +Genitiv ab Götter ff.
if(substr($KEY,-1)=='s') $NEW = $KEY."'"; else $NEW=$KEY.'s';
if(strpos($TXT, ;
} elseif($CUT===false and isset($OPTI[$KEY]) and $OPTI[$KEY]!='(-)')
$PHILO3[$KEY].= ; // optimiert
if($CUT) $TXT = substr($TXT,0,$CUT); // SHIFT ?
$LAB = trim( substr($TXT,strrpos($TXT,'|')+1),']}'); // Plin.]] n. h.
$LAB =ltrim(str_replace(['}',']'],,$LAB), "̓" ); // 'Ραρία 3x
if($LAB!= $KEY and substr( $KEY,0,6)!=='_Grp =' )
echo NLBR.'$PHILO3 hat SHIFT: _'.$KEY.'_ != _'.$LAB.'_ @ '.$TXT; } // nicht plausibel!
$OUT = substr(str_replace(NL.BLK4,NL, print_r($PHILO3,true) ),8,-3);
$TXT = $KEY = ; $N=0;
foreach( explode(NL,$OUT) as $LIN ){ // rE/RE-8_Alle-Links_V4
if( strpos($LIN,],[$KEY,],$LIN); }
if(0)file_put_contents(ROOT.'/meyers/project/rE/RE-8_Alle-Links_V4.txt', BOM. // $allPHILO3.txt
'$PHILO3 = array ... [_Grp'.BLK4.BLK4.BLK4.BLK3.'Stand '.date('Y-m-d H:i').$TXT);
# '.print_r(array_count_values($PHILOq),1).'';
//---------------------------------------------------------Paulys Funktionen ------------
function array_sumb ( $TOT ){
return (int)$TOT['UNK']+$TOT['KOR']+$TOT['FER'] + $TOT['STOP']+$TOT['VOR'];
}
function FileWindows( $LEMMA ){
if($LEMMA=='briva')$LEMMA = 'briva_';
return str_replace(array(':','?','/','|','*'),
array('_','$','£','€','¢'),$LEMMA);} // Windows ohne :?/|* im Filenamen
function hat_akzent( $TXT ){ // Διδάσκαλος
foreach(mb_str_split($TXT ) as $T)
if( mb_strpos(Akzent,$T)!==false ) return 'j' ;
return false;}
function has_Band( $LEMMA, $BAND ){ // Band ist erfasst
global $ALL;
if( isset ( $ALL[ $LEMMA]) )
foreach( $ALL[ $LEMMA] as $ARR) // über alle Nachträge
if( $ARR[ 'Band'] == $BAND and isset($ARR['Data']) ) return 1; // Edit-Info existiert
return false;}
function J_Bd( $LEMMA, $BAND ){ // ist $Band,1 geplant?
global $ALL;
if(isset( $ALL[ $LEMMA]) )
foreach( $ALL[ $LEMMA] as $J => $ARR)
if( $ARR[ 'Band'] == $BAND) return 1 ; return 0 ;}
function J_Bdk( $LEMMA, $BAND ){ // ist $Band geplant?
global $ALL;
if(isset( $ALL[ $LEMMA]) )
foreach( $ALL[ $LEMMA] as $J => $ARR)
if( $ARR[ 'Bdk' ] == $BAND) return 1 ; return 0 ;}
function J_Band( $LEMMA, $BAND ){ // Index $J zum Band
global $ALL; $N = 0;
if(isset( $ALL[ $LEMMA]) )
foreach( $ALL[ $LEMMA] as $J => $ARR) // Register existiert
if( $ARR[ 'Band'] == $BAND ) return $J; else $N++; // das erste Kapitel
return $N;}
function Jok_Band ( $LEMMA, $BAND ){ // Register-Kapitel erstellt
global $ALL;
foreach( $ALL[ $LEMMA] as $J => $ARR)
if(isset($ARR[ 'Band']) and $ARR['Band']==$BAND) // alle Kapitel
$ALL[ $LEMMA][$J]['Data']='ok';
return 'ok';} // wahr
function hat_greek ( $TXT ){ // Διδάσκαλος
if( strpos($TXT,'')!==false and strpos($TXT,'') )
$TXT = substr($TXT,strpos($TXT,'|') ); // S. 32
foreach(mb_str_split($TXT ) as $T)
if (mb_strpos(Greek.Asper,$T)!==false ) return true ;
return false;}
function has_greek( $LEMMA) { // RE:Διδάσκαλος
if( hat_greek(mb_substr($LEMMA,3) ) ) return 'j' ;
return false;}
function mytrim ( $INP, $NACH){ // Interpunktion rechts ##
$TXT = rtrim ( $INP, $NACH);
if(in_array( mb_substr($TXT,-1),['’','‘','.'])) $TXT=mb_substr($TXT,0,-1);
$TXT = rtrim ( $TXT, $NACH);
$END = substr( $INP,strlen($TXT));
if( substr($END,0,1)=='.' // and strlen($END)>1
and strpos($NACH,'.')===false ) $TXT .= '.'; // "Abk.),"
if( $SUP=strpos($TXT,'') ) $TXT = substr($TXT,0,$SUP);
return $TXT; }
function leftrim ( $TXT ){ // Interpunktion links
$TXT = ltrim ( $TXT,'"');
if(in_array( mb_substr($TXT,0,1),['’','‘'])) $TXT=mb_substr($TXT,1);
return ltrim ( $TXT,'"');}
function no_akzent($TXT ){ // υπο απο
$TXT = leftrim ($TXT );
return str_replace(mb_str_split( Akzent. Asper),
mb_str_split(NoAkzent.NoAsper),$TXT);}
function no_halb ( $TXT ){ // strip ,1 und ,2
return str_replace([',1',',2'],,$TXT);}
function nx_halb ( $TXT ){ // ,1 => ,2
return str_replace(',1',',2',$TXT);}
function RE_artt ($ARTIK ){
$POS = strrpos($ARTIK,BLK);
if($POS and (int)substr($ARTIK,$POS+1) ) // Empedokles 3
return substr( $ARTIK, 0, $POS ); // Empedokles
return $ARTIK;
}
function RE_JSON( $TODO, $NAME ){
if( !$TODO ) return;
$FILE = file_get_contents( ANKER.'/_Wiki/'.$NAME );
echo NLBR.'#'.substr($FILE,0,1000);
$JSON = preg_replace('/cntrl:/', , $FILE);
$JSON = json_decode( $JSON, true );
echo NLBR.'#JSON: '.json_last_error().BLK.json_last_error_msg().
NLBR.'# ';
var_dump( $JSON );
// print_r2( $JSON );
exit;
}
function RE_same( $A,$B ){ // A A oder b b
$A =mb_substr( $A,0,1);$B =mb_substr( $B,0,1);
if( ($A==mb_strtoupper($A) and $B==mb_strtoupper($B)) or
($A==mb_strtolower($A) and $B==mb_strtolower($B)) ) return true; else return false;
}
function URL_exists($url){
return str_contains(get_headers($url)[0],"200 OK");
}
function RE_OO($MAIN, $NEW, $NIG, $SD ){ // RE output Link
return strip_tags(
RE_O( $MAIN, $NEW, $NIG, $SD ), TAGS );
}
$NIG_1=$NIG_2=[];
function RE_O( $MAIN, $NEW, $NIG, $SD ){ // RE output Link
global $NIG_1,$NIG_2,$LEGG;
if($NIG<10) $NN= BLK3; elseif ( $NIG<100)$NN=BLK2;elseif($NIG<1000)$NN=BLK;else $NN=;
$NEW2 = RE_genitiv ( $NEW );
$KEYS = array_keys ($NIG_1,$NEW2 );
$LK = array_key_last($KEYS );
if($LK!==null) $LAST = $KEYS[ $LK ]; else $LAST= 0 ; // 1 Spalte = 68 x 6 Wörter
if($LAST and ($NIG-$LAST)<2000)$DLM='--'; else $DLM = BLK2; // ab 2000 Wörter = Link wiederholen
// if($SD and ($NIG-$LAST)> 100) $DLM = BLK2; // ? ab 100 W = $SD oder SperrSchrift
if($SD ) $DLM = BLK2; // immer $SD
if($LAST) $LLL = sprintf('%4d', $LAST); else $LLL = BLK4; // __23
if(isset($NIG_2[$NIG])) $NIG++;
$NIG_2[$NIG] = $NN.$LLL.$DLM.$MAIN.sprintf('%'.max(0,9-mb_strlen($MAIN)).'s',).'— '.$NEW2; // Debug
//
if( $POS = strpos( $NEW, .substr($NEW,$POS1);
else return $NEW;
}
function mb_ucfirst($T ){
return mb_strtoupper(mb_substr($T,0,1)).mb_substr($T,1);
}
function to_greek( $T ){
return rtrim(str_replace( LAT_k, GRE_k, $T.BLK));
}
function to_lat ( $T ){
return rtrim(str_replace( GRE_k, LAT_k, $T.BLK));
}
function to_latein ( $T ){
$U1= $T == mb_ucfirst( $T );
$T2= scan( $T,2,BLK);
$U2= $T2== mb_ucfirst( $T2);
$T= mb_strtolower(trim($T ));
$T=str_replace([ 'αἱ', 'εἱ', 'οἱ', 'υἱ', 'αὑ', 'εὑ','οὑ'],
['hai','hei','hoi','hui','hau','heu','hu'] ,$T);
$T=str_replace([ 'αἷ', 'εἷ', 'οἷ', 'υἷ', 'αὗ', 'εὗ','οὗ'],
['hai','hei','hoi','hui','hau','heu','hu'] ,$T);
$T=str_replace([ 'ἁ', 'ἑ', 'ὅ', 'ἑ', 'ἱ' ,'ὑ','γκ','γγ','γχ', 'ῥ', 'ϋ'],
['ha','he','ho','he','hi','hy','nk','ng','nch','rh','u'] ,$T);
$T=str_replace(['α','ά','ὰ','ᾶ','ἀ','ἁ','ἄ','ἂ','ἆ','ἅ','ἃ','ἇ','ᾷ'], /* für αy = u */ 'α',$T);
$T=str_replace(['ε','ϵ','έ','ὲ','ε','ἐ','ἔ','ἒ','ἕ','ἓ' ], /* für εy = u */ 'ε',$T);
$T=str_replace(['η','ῃ','ή','ὴ','ῆ','ῇ','ἠ','ἡ','ἤ','ἢ','ἦ','ἧ','ᾗ','ἥ','ἣ','ἧ','ᾗ','ῇ'],'e',$T);
$T=str_replace(['ι','ί','ὶ','ῖ','ΐ','ἰ','ἴ','ἲ','ἶ','ἵ','ἳ','ἷ','ϊ'], 'i',$T);
$T=str_replace(['ο','ό','ὸ','ὀ','ὁ','ὄ','ὃ','ὅ','ὃ','ô' ], /* für oy = u */ 'ο',$T);
$T=str_replace(['ρ','ϱ','ῤ','ῥ','ë','ï','j','v','w','(',')','’' ],
['r','r','r','r','e','i','j','v','w', , , ] ,$T);
$T=str_replace(['υ','ύ','ὺ','ῦ','ὐ','ὔ','ὒ','ὖ','ὕ','ὓ','ὗ' ], 'y',$T);
$T=str_replace(['ω','ῳ','ώ','ῴ','ὼ','ῲ','ῶ','ῷ','ὠ','ὡ','ὤ','ὢ','ὦ','ὥ','ὣ','ὧ' ], 'o',$T);
$T=str_replace(['β','γ','δ','ζ','θ', 'κ','λ','μ','ν','ξ','π','ρ','σ','ς','τ','φ', 'χ', 'ψ' ],
['b','g','d','z','th','k','l','m','n','x','p','r','s','s','t','ph','ch','ps'],$T);
$T=str_replace(['αy','εy','οy','α','ε','ο','ä', 'ö', 'ü', 'â','ç','é','è','-','ʿ'],
['au','eu','u', 'a','e','o','ae','oe','ue','a','c','e','e',, ] ,$T);
$T= to_lat($T );
if($T2 and $U2){$P = strpos($T,BLK ) ;
$T = substr($T,0,$P+1).mb_ucfirst(substr($T,$P+1));}
if( $U1) return mb_ucfirst( $T );
return $T ;
}
function to_latin ( $TEXT ){ // sortierbar + ucfirst
$LT = BLK;
for($N=1; $N <= mb_strlen( $TEXT ); $N++){ // Aer8 => Aer 8
$T = mb_substr($TEXT,$N,1);
if( is_numeric($T) ){
if( $LT != BLK )
$TEXT = mb_substr($TEXT,0,$N).BLK.mb_substr($TEXT,$N);
break;
} else $LT = $T;
}
if($STRI=mb_strpos ($TEXT,'–')) $TEXT = mb_substr($TEXT,0,$STRI); // 127-138
$TEXT = str_replace(['Abgar, Abgaros','Aqua, Aquae','Ara, Arae','Castra, Castrum'],
['Abgar', 'aquae', 'AraArae', 'CastraCastrum' ],$TEXT);
$TEXT = to_latein($TEXT);
if( mb_substr($TEXT,1,1)==BLK ) $TEXT = mb_substr($TEXT,2); // a, e, o
else if( mb_substr($TEXT,2,1)==BLK ) $TEXT = mb_substr($TEXT,3); // ad, ab, L., I.
return $TEXT ;
}
function myDEF( $DEFI, $K, $ANZ){ $ATTR=$KOMM = ; // Def mySQL Variable
if( isset( $DEFI[$K]['len']) ){
if($LEN=$DEFI[$K]['len'] ) $LLL = '('.sprintf('%4d',$DEFI[$K]['len']).')';
else $LLL = '(0000)';
if( $K == 'Key' ){ $TYP = 'int '; $ATTR='unsigned';} // add primary key
else if($LEN >= 200 ){ $TYP = 'varchar'; $KOMM='Länge '.$LEN;}
else $TYP = 'char'; }
$OUT =sprintf('%8s' ,$TYP ).$LLL.BLK.
sprintf('%-10s',$ATTR).' not null /* '.sprintf('%4d',$ANZ );
if( $KOMM) $OUT.= ', '.$KOMM;
return $OUT.' */';
}
function myVAR( $VAR, $ART ){ // Eigenschaften $VAR
if($ART=='len' and is_string($VAR) ) return mb_strlen($VAR); else return 1;
}
function strip_tags_content($text,$tags=, $invert = FALSE) {
preg_match_all( '/<(.+?)[\s]*\/?[\s]*>/si',trim($tags),$tags);
$tags = array_unique( $tags[1] );
if( is_array($tags) and count( $tags) > 0 ){
if ( $invert == FALSE) return preg_replace
('@<(?!(?:'.implode('|', $tags).')\b)(\w+)\b.*?>.*?</\1>@si',,$text);
else return preg_replace
('@<(' .implode('|', $tags). ')\b.*?>.*?</\1>@si',,$text);}
elseif( $invert == FALSE) return preg_replace
('@<(' .'\w+)\b.*?>.*?</\1>@si',,$text);
return $text;
}
//---------------------------------------------------------Paulys Realencyklopädie ------
function RE_Anfang( $DET ){
RE_var_port( 1, ['ALL'] ); // global
define ( 'IS_PHP_D', $DET ); // 0/1=Details nein/ja
'.Pauly_RE.'
' .NL2.'
'
Programm wiki_RE am '.wochentag(date('w')).' '.date('d.m.Y').' mit '.
'Zugriff auf die Register von <a href="'.WIKI.PAULY2.'">Paulys RE.</a>
date('H:i:s',TIM).' / Start ... '.dauert() .NL;
if( RUN ){
$S = '?Typ=RE&Text=RE-0_Stand.htm'; $WAR = 'wiki/Kategorie:RE:Wartung';
$TAR = '" target="_blank"'; $PAU = 'wiki/Kategorie:'.PAULY2;
echo NLBR.EC_.'RUN = true, '.
'»Hello World« und '.'Guten Morgen :-)' .NL. // RUN = true
- ' .NL.
- ' .'PyCharm aktualisieren' .' '.NL.
- <a href="'.WS.$WAR.$TAR.'>RE:Wartung</a> und ' .' '.NL.
- <a href="'.WS.BEOB.$TAR.'>Beobachtungsliste 🟊</a> sowie ' .' '.NL.
- <a href="'.ELEX.$S.$TAR.'>RE-Werkstatt/Stand</a> neu laden (FTP)' .' '.NL.
- <a href="'.WS.$PAU.$TAR.'>Kategorie:Pauly RE</a> ab und zu kontrollieren. '.NL.
'
'
'
'
'
'
}
function RE_Codierung($TXT) {
if( $TXT== ) return;
else if( trim($TXT) ){ // Analyse der Codierung
require_once ANKER.'/www/meyers/code/UTF8_BERO.php';
Input: '.$TXT.NL.' => RE_OKK(): ';' .NL;
if( ($REOKK = RE_OKK($TXT)) ) echo 'Ist ein Link
else echo 'Kein Link' .NL;
$OUT = $COD = ;
$PHILO = PHILO ($TXT, , , , ); // PHILO ($MAIN, $HAT, $ARTIK, $NIG, $SD)
for( $I=0; $I < mb_strlen($TXT); $I++)
if( ( $NUM = mb_ord($C=mb_substr($TXT,$I,1),UTF8)) < 128 ){ // ASCII
$OUT .= $C ; if($C==',') $COD.=NL.'_____: ';}
else{ $OUT .= '*'; $CPT = strtoupper( dechex($NUM) ); // Unicode utf-8
$CPT = substr('00000',0,5-strlen($CPT)).$CPT;
$COD .= NL.TAB.$C.BLK.UTF8_BERO('U+'.$CPT); }
ASCII: '.$OUT.NL.' => PHILO (): '.$PHILO.''.NL.
'
Codes: '.$COD.'';
} else if( $TXT==BLK ){ // Test der Pipeline
$INP = file_get_contents(WS.'w/index.php?title='.
'Wikisource_Diskussion:RE-Werkstatt/Pipeline&action=edit' );
$INP = substr($INP=WIKI_token($INP,'<textarea','</textarea>',-1), strpos($INP,'>')+1);
if( $DLM='€1' )
while( ($POS=strpos($INP,""))!==false ){
$INP = substr($INP,0,$POS).BLK.$DLM.BLK.substr($INP,$POS+3);
if( $DLM=='€1' ) $DLM='€2'; else $DLM='€1'; }
$OUT = str_replace(["",'[',']','{','}', NL],
[ ,'(',')','(',')',BLK.NL],$INP);
$OUT = POLYTRN($OUT, , 0, );
echo str_replace([NL,'€1','€2',],[NLBR,'',''],NL.$OUT);}
exit;
}
function RE_csv2wp($NAME,$ART){ // Begrenzungszeichen $ART: CSV, ';', 'x' 2 Spalten
if($NAME== ) return;
$DIR ='C:\Users\info\Documents\_Wiki/';
$DATEI = explode( NL, mb_substr(file_get_contents( $DIR.$NAME.'.csv'),mb_strlen(BOM) ));
$NEW = scan ( $NAME,1,'.' ). '.txt';
$NEW2 = scan ( $NAME,1,'.' ).'_2.txt';
$DLM = '!'; $OUT='{|class="wikitable sortable" style="text-align:right;"';
foreach( $DATEI as $LINE ){
if($LINE) $OUT .= NL.'|-'.
NL.$DLM ;
if( $ART=='x'){$ELE = ltrim(substr($LINE,strpos($LINE,';')+1),"'");
if(substr($ELE,0,1)=='"') $ELE = substr($ELE,1,-2);
$ELEM= [scan($LINE,1,';'), $ELE];}
elseif($ART==CSV) $ELEM= explode( $ART,mb_substr($LINE,1,-1));
else $ELEM= explode( $ART, $LINE );
foreach( $ELEM as $J => $SPALTE )
if($J==0) $OUT .= $SPALTE;
else $OUT .= $DLM.$DLM.$SPALTE; $DLM = '|';}
if( $ART=='x') $OUT =
str_replace(['£','->||','|-'.NL.'|{|class',NL.'|Artikel||','->!!','_'],
['"','->' ,'|}'.NL. '{|class',NL.'!Artikel!!','->' ,BLK],substr($OUT,5));
$OUT .= NL.'|}';
file_put_contents( $DIR.$NEW, BOM.$OUT );
/* $OUT = strtr ( $OUT,['
'=>'
',NL.'|-'=>NL.'|- ',
'||'=>' || ', NL.'|' =>NL.'| ']);
$OUT = POLYTRN($OUT,'Aal',1);
$POS = strpos( $OUT,'{|');
$GROLAS= $LAST; // Anzahl Teil-Artikel
if( $OUT ) return str_replace('$','
',trim($OUT,'$'.BLK) );
else return RE_GROSUM( $ALL[$LEMMA], 'S tot', $PRT ); // $J = 0 .. x
}
function RE_GROSJ ( $ARTIK ) { $JJ = $TOT = 0; // $J zum Hauptartikel
foreach( $ARTIK as $J => $ARTI )
if( isset( $ARTI['S tot'] ) and $ARTI['S tot'] > $TOT ) {
$JJ = $J; $TOT = (int) $ARTI['S tot'] ; }
return $JJ;
}
function RE_GROSUM( $ARTIK, $TYP, $PRT){ $SUM = 0; // 'S tot', 'KB'
foreach( $ARTIK as $J => $ARTI ){ // $J = 0 .. x
if( 'S tot' == $TYP ) $SUM += RE_GMAX($ARTI)-(int)$ARTI['S von']+1;
else if( isset( $ARTI [$TYP]) ) $SUM += $ARTI [$TYP];
if( 0 and $PRT ) echo ', '.$J.'='.$SUM; }
return $SUM; // 'KB'
}
function RE_GMAX ( $ARTI ){ // # Spalten je $J
if( $MAX = (int)$ARTI ['S bis'] ); else
$MAX = (int)$ARTI ['S von'] ;
return $MAX;
}
function RE__GROSSE(){ // nicht verwendet
$src = 'C:\Users\info\Documents\_Wiki/';
$DIR = array_diff(scandir($src), array('..', '.')); $FILE = $NEW = ;
foreach($DIR as $fil)
if(strpos($fil,'.htm')){ $FILE = $src.$fil;
$BD = scan($fil,1,'_' );} // V,2
if(!file_exists($FILE)) return;
$INP = file_get_contents($FILE);
$OUT = substr($INP,strpos($INP,'<body>'));
$OUT = strip_tags ($OUT, );
$OUT = '|-'.NL.
'|'.$BD.'||colspan="2"|'.str_replace([' (' ,')', NL ],
[']]||', , NL.'|-'.
NL.'|' .$BD.'||[[RE:' ],trim($OUT) );
$WORD = explode(NL, $OUT ); // |II,1||Ηνίοχοι||Kiessling
foreach( $WORD as $TXT ){
if($POS = strpos($TXT,'RE:')){
$END = strpos($TXT,']]||');
$ART = substr($TXT,$POS+3,$END-$POS-3); // Hera, Heros
$SPL = explode(',',$ART);
$TWO = ;
foreach($SPL as $ONE)
$TWO .= ''.trim($ONE).', ';
$TWO = trim($TWO,'[, ');
$TXT = substr($TXT, 0, $POS ).$TWO.substr($TXT,$END+2); }
$NEW .= NL.$TXT; } // Hera, Heros
return $NEW.NL.'|-'.NL;
}
function RE_GR_POLY_($IN){ // Die 1600 grössten Artikel mit xxx ergänzen
$LINE = explode(NL,$IN);
$OUT = ;
foreach($LINE as $TXT)
if(hat_greek ($TXT) and strpos($TXT,'Polytonisch')==false){
$POS = strpos ($TXT,'RE:');
$POS = strpos ($TXT,'|',$POS)+1;
$END = strrpos($TXT,']]');
$TEIL = ''.substr($TXT,$POS,$END-$POS).'';
$OUT .= NL.substr($TXT,0,$POS).$TEIL.substr($TXT,$END);
} else $OUT .= NL.$TXT;
return $OUT;
}
function loch($F,$BAND,$VON,$LEMMA){
global $STAR, $ENDE;
$BDSE = sprintf('%9s',$BAND).sprintf('%5d',$VON);
if( $BAND=='R' ) $ENDE=1;
if( $ENDE ) $EX = BLK; else
if( 0 and in_array(trim($BDSE),array('IX A,2 1540','XXIII,2 1439','XXIII,2 1702',
'VIII A,1 172','VIII A,1 239')) )
$EX = '✓'; else
if($F < 15){$EX = '*'; $STAR++;} else $EX = BLK;
$T = sprintf('%3d',$F);
if($F==100) $OUT = BLK3;
else $OUT = substr($T,0,2).str_replace(
array('0','1','2','3','4','5','6','7','8','9'),
array('₀','₁', '₂','₃', '₄','₅', '₆', '₇','₈', '₉'),substr($T,2,1) );
return $OUT.BLK.$EX.$BDSE.BLK.mb_substr($LEMMA,3,20);
}
$MNK = 0 ; $MENGE= $KREUZ =[];
function RE_Menge( $LEMMA, $NACHT, $TEXT, $TEST ){ // Anzahl Zeichen etc.
global $MENGE, $KREUZ, $MNK;
return;
if(isset($KREUZ[$LEMMA.BLK.$NACHT ]) ) $START = $KREUZ[ $LEMMA.BLK.$NACHT ];
else $START = 'I,1: 0';
if( $NACHT == 0 ) $LEMLEN = mb_strlen($LEMMA);
else $LEMLEN = strlen($NACHT)+1; // = Länge Stichwort
$BAND = scan($START,1,':'); $SEITE = trim(scan($START,2,':'));
$VON = (int)scan($SEITE,1,'-'); $MELD = 0;
$BIS = scan($SEITE,2,'-'); if(!$BIS) $BIS = $VON;
$TEXT .= '['.($BIS+1).']'; $ETC = strpos($TEXT,' etc. etc.');
if($TEST)echo NLBR.'Test '.$LEMMA.' /'.$NACHT.'= '.$START.' | '.$ETC.' = '.NLBR.$TEXT.NLBR;
for($S=$VON; $S<=$BIS; $S++){ $PBR = '['.($S+1).']';
$SPALTE = $BAND.': '.z4($S); $LEN = mb_strpos($TEXT,$PBR);
if(!$LEN){ $PBR=substr($PBR,0,-1); $LEN = mb_strpos($TEXT,$PBR); }
if(!$LEN and !$ETC and !$MELD){
echo NLBR.(++$MNK).BLK.'Trennung über '.($BIS-$VON+1).' Seiten | '.
$LEMMA.' /'.$NACHT.'= '.$START.' | '.$PBR.']'; //.NLBR.$TEXT.NLBR;
$MELD = 1; }
if(!isset($MENGE[$SPALTE])) $MENGE[$SPALTE] = 0;
$MENGE[$SPALTE]+= $LEN + $LEMLEN;
$TEXT = mb_substr($TEXT,$LEN+strlen($PBR));
$LEMLEN = 0; }
}
$OAUTO = []; $NNEU = 0;
function RE_Neuland( $LANG, $LEMMA, $J, $ARTI ){
global $ALL_LEMMA,$OAUTO,$NNEU;
$AUTOR = trim($ARTI['Autor']); $ISOK = $ANF = ;
if( $AUTOR == 'OFF' ) $NAME = ;
else $NAME = ;
if( $AUTOR == 'OFF' ) $ARTI['Verweis'] = 'ON';
else if(isset($OAUTO[$AUTOR]) ) $AUTOR = $OAUTO[$AUTOR];
else if( substr($AUTOR,-1)!='.')$AUTOR .= '.';
if( $ARTI['Verweis']=='ON' and $ARTI['Text'] != '(-)'
or substr($ARTI['Text'],0,2)=='s.' ){
$ARTI['Text'] = str_ireplace('vgl.', 's.', $ARTI['Text'] );
$ANF = substr( $ARTI['Text'],0,strpos($ARTI['Text'],'s.'));
$TEXT = substr( $ARTI['Text'], strlen($ANF) );
$LLL = trim(str_replace('s.', , $TEXT));
$LL = str_replace('Nr.',, $LLL );
$START ='s. '.str_replace('Nr.','Nr. ',$LLL).'.';
if(!isset($ALL_LEMMA[$LL]) ) $ISOK ='?????????';
else if( $ALL_LEMMA[$LL] == 2 ) $ISOK =' => online';
if( isset($ALL_LEMMA[$LL.' 1'])){$ISOK .=' => auch Nr. 1)';
$START = str_replace('|{',' 1|{',$START);}
$IND = strpos($START, ' Nr. ');
if($IND){$I2 = strpos($START,'}',$IND);
$START= substr($START, 0 ,$IND).'}}}}'.substr($START,$IND,$I2-$IND).'.';}
} else if( $ARTI['Verweis']=='ON' ) $START = 's. d. Suppl.';
else $START = ;
if( has_greek( $LEMMA ) ) $SORT = to_latin(substr($LEMMA,3));
else $SORT = substr($LEMMA,3);
if(substr($SORT,0,1)=='J' ) $SORT = 'I'.substr($SORT,1);
if(substr($SORT,0,1)=='U' or substr( $SORT,0,1)=='W')$SORT = 'V'.substr($SORT,1);
$LEN = strpos( $SORT, BLK );
if( $LEN and !is_numeric ( substr ( $SORT, $LEN+1, 1) ))
$SORT = substr($SORT,0,$LEN).strtolower(substr($SORT,1+$LEN));
if( 0 and $SORT==substr($LEMMA,3) ) $SORT = ; // muss Lemma in Griechisch gewandelt werden?
if( $ARTI['Band'] [0] == 'S' ) $SORT = ;
if( 0 < $ARTI['Nachtrag']
and $ARTI['Band'] [0] == 'S' ) $KURZ = ;
else $KURZ = RE_2( BLK, trim( $ARTI['Text' ],BLK.'='));
if(isset($ARTI[ 'WP' ]) ) $WP = $ARTI['WP'];
else $WP = ;
if( trim($ARTI['S bis'])==) $ARTI['S bis'] = 'OFF';
if( trim($ARTI['S bis'])!='OFF' ) $UMBRUCH= NL.'['.((int)$ARTI['S von']+1).'] '.NL;
else $UMBRUCH= ;
if( trim($ARTI['R-Vor' ])==)$ARTI['R-Vor'] = 'OFF';
if( trim($ARTI['R-Nach'])==)$ARTI['R-Nach']= 'OFF';
if( $ARTI['liber' ] > 2022 ){ $SCHOPF = 'ON'; $STARB = $ARTI['liber'] - 71; }
else { $SCHOPF = 'OFF'; $STARB = ; }
if(isset($ARTI[ 'Tod' ]) ) $STARB = $ARTI['Tod'];
if( $ARTI['liber' ] ==
and $ARTI['Geburt'] >=JJ52-78){ $SCHOPF = 'ON'; $GEBURT= trim($ARTI['Geburt']);}
else $GEBURT= ;
if(isset($ARTI['Schopf']) ) $SCHOPF = $ARTI['Schopf'];
if( $LANG > 800 ) $SCHOPF = 'OFF';
if(isset($ARTI['Stand']) and
substr($ARTI['Stand'],0,2)!='un') $KORR = $ARTI['Stand' ];
else $KORR = 'korrigiert';
if( $LANG > 100 ) $VERWEIS= 'OFF';
else $VERWEIS= $ARTI['Verweis'];
if( $LANG ) $OUT = NL; else $OUT = $ISOK .NL;
if( $LANG == 1 ){ $OUT .= "".$LEMMA." (".++$NNEU.') $s ';
if( $ARTI['mist'] ) $OUT .= '******* Meldung '.$ARTI['mist'].BLK;
if( !$ARTI['Bd-R'] ) $OUT .= NL;
else $OUT .= '******* bestehend *******'.NL;}
$OUT.= '{{REDaten'
.NL.'|BAND=' .trim($ARTI['Band' ] )
.NL.'|SPALTE_START=' .trim($ARTI['S von'] )
.NL.'|SPALTE_END=' .trim($ARTI['S bis'] )
.NL.'|VORGÄNGER=' .trim($ARTI['R-Vor'] )
.NL.'|NACHFOLGER=' .trim($ARTI['R-Nach'])
.NL.'|SORTIERUNG=' .$SORT
.NL.'|KORREKTURSTAND=' .$KORR
.NL.'|KURZTEXT=' .$KURZ
.NL.'|WIKIPEDIA=' .$WP
.NL.'|WIKISOURCE='
.NL.'|GND='
.NL.'|KEINE_SCHÖPFUNGSHÖHE='.$SCHOPF
.NL.'|TODESJAHR=' .$STARB
.NL.'|GEBURTSJAHR=' .$GEBURT
.NL.'|NACHTRAG=' .$ARTI['Nachtr' ]
.NL.'|ÜBERSCHRIFT=' .$ARTI['Übersch']
.NL.'|VERWEIS=' .$VERWEIS
.NL.'}}';
if( $LANG == 0 ) $OUT .=
NL."".str_replace(' 1)','. 1)',$ARTI['fett'])." ".$ANF.$START.$UMBRUCH
'.$NAME
.NL. $J.TAB.' „'.$LEMMA.'“'
.NL.'--------------------' .NL;
if( $LANG == 1 ){
if( $ARTI['kopf'] != ) $OUT .= NL. $ARTI['kopf' ].NL;
if( $ARTI['name'] != ) $OUT .= NL.$ARTI['name'].BLK.$ARTI['RText'];
else $OUT .= NL. $ARTI['RText'];
' ;}
return $OUT;
}
function RE_Regi_at( $BAND, $AT ){
if( strlen( $BAND) == 1 ) $NB = NBSP; else $NB =;
if(in_array($BAND,RE_ABC) and $BAND!='z'){$BB='';$NXT=' ↦ '.RE_ABC[RE_ABCN[$BAND]+1];}
else if($BAND=='z'){$BB='';$NXT='';}
else $BB= $NXT= ;
return '<a href="'.WIKI.PAULY2.'/Register/'.
str_replace(CH160,'_',$BAND).
'#'.urlencode(RE_B($AT)).'" target="_blank">'.$BB.$BAND.$NB.$NXT.'</a>';
}
function RE_REN ( $TODO ){ // rename im DIR für viele Files
$N = 0; if(!$TODO ) return;
$DIR = "C:\Users\info\Documents\www\meyers\RE";
$D2 = "c:/Users/info/Documents/www/Band R";
if( is_dir($DIR) and ($dh = opendir($DIR) )
and ($NUMB=count(scandir($DIR))-2 ) )
while( $N < 150000 and($file=readdir($dh)) !==false )
if($file!='.' and $file!='..' ){
$TEIL = scan ( $file,2,'_.');
$NR = (int)$TEIL;
if(trim($TEIL,'0123456789')) echo NLBR.$TEIL;
$NEW = 'R_'.($NR+1).'.png';
if(!file_exists( $D2.'/'.$NEW) ){
// rename ( $DIR.'/'.$file, $D2.'/'.$NEW );
$N++;
// echo NLBR.$file.' => '.$NEW ;
}
set_time_limit( 3 ); // CPU pro File
}
return NLBR.date('H:i:s').' / RE_REN(): '.$NUMB.' Elemente sind in '.$DIR.', rename von '.
$N.' Files.' ;
}
/* foreach(RE_ORDER as $BD=>$B) $ORIG[ RE_BAND[$BD][0] ] = $BD; // !!! to do !!!
$KEY = $ORIG[ substr($file,0,4) ];
if($KEY=='I,2' and $file < 'P_010330') $KEY = 'I,1'; // stimmt nicht
if($KEY=='V,2' and $file < 'P_090385') $KEY = 'V,1';
$FNR =((int)substr($file,4,4)- RE_BAND[$KEY][1])*4 + RE_BAND[$KEY][2] + 2;
if($FNR==-3)$FNR = 0;
if($FNR>=0) $NEW = $KEY.BLK.$FNR .'.png';
else $NEW = $KEY.BLK.substr($file,4,4).'.png'; */
function RE_PNG ( $TODO ){ // *.tiff => *.png
if(!$TODO ) return;
$fmt = 'png'; $N = 0;
$src = 'C:\Users\info\Documents\www\meyers\RE/';
$out = 'C:\Users\info\Documents\www\meyers\REk/';
$files= array_diff(scandir($src), array('..', '.'));
foreach( $files as $fil )
if(!file_exists($NEW = $out.scan($fil,1,'.').'.'.$fmt) and ++$N < 30000){
$image = new Imagick($src.$fil );
$image -> setImageFormat( $fmt ); // .xyz => .png
$image -> thumbnailImage( 0,150); // (breit, hoch) 0,150 oder 1000,0
// $image -> setImageType( 2 ); // schwarz-weiss
$image -> writeImages ( $NEW, 0); // incremental files
set_time_limit( 4 ); }
return NLBR.date('H:i:s').' / RE_PNG(): '.$N.' Elemente in '.$out.' erstellt.';
}
function RE_TT( $PFAD, $NAME ){
return NL2. '== '. $NAME.' == NewFile '.NL.
file_get_contents($PFAD.$NAME) .NL;
}
function RE_Source ( $TODO ){ // PHP-Code Versionen
if( !$TODO ) return;
$PFAD = ANKER .'/My SAS Files/9.4/';
$BAK2 = ANKER.R_R .'save-csv/RE_Source_-2.txt'; // 2. Backup
$BAK1 = ANKER.R_R .'save-csv/RE_Source_-1.txt'; // 1. Backup
$HEUT = ANKER.R_R .'save-csv/RE_Source_00.txt'; // Guten Morgen
$AKTU = 'C:/Users/info/Desktop/RE_Source.txt'; // Werkstatt
$OUT = 'Backup vom '.date('Y-m-d H:i:s').str_replace(TAB,BLK4,
RE_TT( $PFAD, '42 Include.sas' ).
RE_TT( $PFAD, '43 PHP_Pgm.sas' ).
RE_TT( $PFAD, '44 Main_Pgm.sas').
RE_TT( $PFAD, '45 Home.sas' ).
RE_TT( $PFAD, '46 Frames.sas' ) );
if( RUN ){
file_put_contents( $BAK2, file_get_contents( $BAK1 )); // Backup -2 Tage
file_put_contents( $BAK1, file_get_contents( $HEUT )); // Backup -1 Tag
file_put_contents( $HEUT, $OUT ); } // heute Morgen
file_put_contents( $AKTU, $OUT ); // aktuell
return NLBR.date('H:i:s').' / RE_Source mit dem täglichen Backup'.dauert();
}
function RE_THEbotIT( $OPT, $TODO ){
if( !RUN and !$TODO ) return;
$REF = WS.'w/index.php?title='.( $PAG = 'Benutzer:THEbotIT/Logs/ReScanner' );
$INP = file_get_contents($REF.'&action=edit' );
$INP = substr($INP=WIKI_token($INP,'<textarea','</textarea>',-1), strpos($INP,'>')+1);
$LIN = explode(NL,$INP); $START=$DATE=$TXT=;
foreach ($LIN as $I => $LINE)
if(substr($LINE,0,2)=='=='){ $START = $I; $DATE = '20'.substr($LINE,2,8); }
foreach ($LIN as $I => $LINE)
if($I>$START and trim($LINE) and strpos($LINE,'opening task' )===false
and strpos($LINE,'closing task' )===false
and strpos($LINE,'Persist ' )===false
and strpos($LINE,'[Start the bot Re')===false
and strpos($LINE,'[Start the bot Re')===false
and strpos($LINE,'--[[Benutzer:THEb')===false
) if($OPT) $TXT .= NLBR. ''.$LINE.'';
else $TXT .= NLBR.EC_.''.$LINE.'';
Meldungen von THEbotIT per '.$DATE.' unter '.
'<a href="'.$REF.'">'.$PAG.'</a>:'.str_replace(
['] ['," ['" ,'
' ,' INFO ','','' ],
[ BLK ," [['",'
',BLK,'',''], $TXT) .'
';if( $OPT ) $TXT = NL2.'
else $TXT = NL2.'
if($TODO){ echo $TXT.NLBR.NLBR; exit; } // Test
else return $TXT; // Produktion
}
function CHARBR( $UTF8_COD, $UTF8_SubBl ){ // Character
if( defined('CHARBR') ) return; // Zwischentitel utf-8
$DLM=$LALF=$LSUB=$SUB=; $I=$N=$OK=0;
foreach( $UTF8_COD as $CHAR => $ARR ){ $N ++;
if( $LALF!=($ALFA= UTF8_BERO ('U+'.$ARR[0] )) ) $I =0;
if( isset( $UTF8_SubBl[ $ARR[0] ]) and
$LSUB!=($SUB =$UTF8_SubBl[ $ARR[0] ]) and
$N > 200 ) $OK=1;
$TXT= BLK.str_replace('LETTER ',,$ARR[1]).BLK; $I ++;
foreach(['A','ALPHA'] as $BUCH )
if( strpos( $TXT,'CAPITAL '.$BUCH.BLK)!==false or
strpos( $TXT,'SMALL '.$BUCH.BLK)!==false or
strpos( $TXT,'SYMBOL ' .$BUCH.BLK)!==false ){ $OK=1; break; }
if( strpos( $TXT, ' ZERO ' )!==false or
strpos( $TXT, ' ONE ' )!==false and
strpos( $TXT, ' DIGIT ' )!==false ) $OK=1;
if( $OK and $I>8) { $DLM .= $CHAR; $I=0; }
$LALF=$ALFA; $LSUB=$SUB; $OK=0; }
define ( 'CHARBR', $DLM ); // 'AaÀàǍǞǺȦΑάαϊẠὰᾰ'
}
function RE_count_chars( $INPUT ){
$LINES = explode(BLK, $INPUT ); $unique=[];
foreach( $LINES as $LINE )
if($LINE =='---------' or substr ( $LINE,0,3)=='RE:') continue; else {
$LINE = str_replace([TAB,NL,BLK],,$LINE); // gekürzt
while( $LINE ) {
$CHAR = mb_substr($LINE, 0, 1 );
$LINE = mb_substr($LINE, 1 );
if(array_key_exists($CHAR,$unique)) $unique[ $CHAR ]++;
else $unique[ $CHAR ]=1; }}
foreach( $unique as $CHAR => $ANZ )
if( ! normalizer_is_normalized( $CHAR )){
$NEW = normalizer_normalize( $CHAR, Normalizer::FORM_C );
unset( $unique[ $CHAR ] );
if(isset($unique[ $NEW ]) ) $unique[$NEW]++;
else $unique[$NEW] = $ANZ;
echo NLBR .'_'.$CHAR.'_=> _'.$NEW.'_ / wird '.$ANZ.'x normalisiert.';}
return $unique;
}
function RE_diacritic( $ALFA, $CTXT ) {
return in_array ( $ALFA,['Cyrillic Extended-A','Arabic Extended-A','Hebrew']) or
stripos ( $CTXT, 'arabic' ) or
stripos ( $CTXT, 'combining') or
stripos ( $ALFA, 'diacritic') or
stripos ( $ALFA, 'modifier' ) ;
}
function rechts($T){
return 'style="text-align:right"|'.$T;
}
function RE_rtl( $CHAR, $ALFA ){
if( in_array($ALFA,['Hebrew']) or in_array(
IntlChar::charDirection($CHAR), [ IntlChar::CHAR_DIRECTION_RIGHT_TO_LEFT_ARABIC ,
IntlChar::CHAR_DIRECTION_RIGHT_TO_LEFT,IntlChar::CHAR_DIRECTION_RIGHT_TO_LEFT_EMBEDDING,
IntlChar::CHAR_DIRECTION_ARABIC_NUMBER,IntlChar::CHAR_DIRECTION_RIGHT_TO_LEFT_OVERRIDE ,
] )) return '|style="text-align:right"|';
else return '|';
}
function RE_strip_text ( $NAME ){ // RE-9a_Nur-Text
if( !file_exists($FILE = ANKER.R_R.$NAME) ){
echo NLBR.'Datei '.$FILE.' fehlt.'; return; }
$LININ = file($FILE);
foreach( $LININ as $I => $LINE ) // ohne Überschriften
if(in_array($T = mb_substr($LINE,1,5),['_____','—————'])) {
unset( $LININ[$I ], $LININ[$I+1]);
if( isset($LININ[$I-1]) and $T== '—————' ) $LININ[$I-1].= NL;}
else if( $I < 5 or $T== '.....' ) unset($LININ[$I] );
$INPUT = implode(, $LININ);
// file_put_contents( ANKER.R_R.'RE-9a_Nur-Text-t.txt',$INPUT); // Beleg
return [$INPUT,substr_count($INPUT,NL2)];
}
function RE_UTF8B( $COD, $TYP){
if( !isset(UTF8_BLOCK($COD)[$TYP]) or
== UTF8_BLOCK($COD)[$TYP] ) return;
if($TYP == 'Grp' ) $ART = 'Group'; else
if($TYP == 'Spr' ) $ART = 'Language'; else
if(in_array($TYP,['Key',,'Typ']) ) $ART = ; else
$ART = trim($TYP,"'");
if(in_array($TYP,['Key',,'Anz','TxT']) ){ $DLM = ; $END= ; }
else if( $ART == ){ $DLM = ", "; $END=""; }
else { $DLM = ', '.$ART.": "; $END=""; }
return $DLM.UTF8_BLOCK($COD)[$TYP].$END;
}
function RE_Alle_Gly ( $TODO ){
if( RUN or !$TODO ) return;
global $unique; $istok=[];
$ZEIL=$NUM=$LALF=$LSUB=$NTOT=$LCPT=0; $TAB='1 '; $NPAU =$GRP=1; $FCPT='0020';
set_time_limit( 60 ); // RE-Display hat 2 sec
require_once ANKER.'/www/meyers/code/UTF8_BERO.php';
require_once ANKER.'/www/meyers/code/UTF8_Block.php';
require_once ANKER.'/www/meyers/code/UTF8_COD.php' ;
require_once ANKER.'/www/meyers/code/UTF8_CODE.php';
require_once ANKER.'/www/meyers/code/UTF8_SubBl.php';
CHARBR( $UTF8_COD, $UTF8_SubBl );
if(!count( $unique )){
$ANALY = RE_strip_text( 'Input/RE-9a_Nur-Text.txt' ); // Input
$INPUT = $ANALY[0];
$unique = RE_count_chars ( $INPUT ); } // 810 Glyphen
echo NLBR.EC_.'RE-Alle_Gly: Nutzbare Zeichen für Paulys RE' .NLBR.
EC_.'"Input/RE-0_Alle-Glyphen.txt" nach „Wikisource:RE-Werkstatt/Alle Glyphen“,'.NLBR.
EC_.'"Input/RE-0_Liste-Glyphen.txt" nach „Wikisource:RE-Werkstatt/Liste'.
' Glyphen“ kopieren!' .NLBR.NL2;
$OUT = str_replace('$','Alle Glyphen Unicode',LinkZch) .NL.
'Verzeichnis der verfügbaren Glyphen (Zeichen) für '.PAULY0.' (RE),' .NL.
'gegliedert nach Sub-Block.' .NL.
"Fett markiert sind Glyphen, die in der RE verwendet werden." .NL2.
'== 1. Alle Glyphen Unicode ==' .NL2.'' .NL.
'{| class="wikitable tabelle-kopf-fixiert"' .NL.
'!Block||Alle Glyphen Unicode (Anzahl / in RE / Codepunkte)' .NL.'|-'.NL.
'|style="vertical-align:top;"|ASCII Zeichensatz ' .
'[3]' .NL.
'|TAB NL SPACE'.BRNL;
foreach( $unique as $CHAR => $ANZ ){
if( isset($UTF8_COD[$CHAR]) ) $COD = 'U+'.$UTF8_COD[$CHAR][0]; // Block ist in RE
if( isset($istok[ $ALFA = UTF8_BERO($COD)]) ) $istok[$ALFA] += $ANZ;
else $istok[$ALFA] = $ANZ; }
foreach( $UTF8_COD as $CHAR => $ARR ) // <control xy>
if( $CHAR!='!' ) unset( $UTF8_COD [$CHAR] ); else break;
foreach( $UTF8_COD as $CHAR => $ARR ){
if(isset($UTF8_COD [$CHAR])) $CPT = $UTF8_COD[$CHAR][0]; else $CPT= '0022'; // \"
if(isset($UTF8_SubBl[$CPT])) $SUB = $UTF8_SubBl[$CPT];
if( strlen($CPT)==4 ) $COD ='U+0'.$CPT; else $COD='U+'.$CPT;
if($LALF!= ($ALFA=UTF8_BERO( $COD )) and $LALF ) { // neue Gruppe
if(isset( $istok[$ALFA])) $LINK = '[['.KopfZch.'Alle Zeichen#Box '.$ALFA. // $LINK
'|'.$ALFA.']] ';
else $LINK = $ALFA. ' ';
$REF ='<ref'.NL.'name="A'.++$GRP.'">' .NL."".$LINK."" .NL. // Cite error: Ungültige <ref>
-Verwendung: „ref“ ohne Namen muss einen Inhalt haben.
'('.str_replace([": ,",", ,"],
[':' ,',' ],RE_UTF8B($COD,'Anz').
RE_UTF8B($COD,'Typ').ucwords(RE_UTF8B($COD,'Spr')).',' .NL.
'[https://symbl.cc/en/unicode/blocks/'.RE_UTF8B($COD,'Key').
' symbl.cc])' ) .BRNL.
str_replace(CRLF,BR2,RE_UTF8B($COD,'TxT')).BR.NBSP.NL.'</ref>';
$OUT .= BRNL.'('.$ZEIL." / ".$NPAU." / [[".KopfZch. // Zwischensumme
'Liste Glyphen#'.$LALF.'|U+'.$FCPT.'–U+'.$LCPT.']])' .NL;
if( $ALFA ) $OUT .= '|-'.NL.'|style="vertical-align:top;"|'.$LINK.BLK.$REF .NL.
RE_rtl($CHAR,$ALFA).''; // (94 / U+00A0)
$NUM += $ZEIL; $NTOT+=$NPAU; $ZEIL=$NPAU =0; $FCPT=$CPT; }
else if( !$LALF ) /* nix im Anfang */ ;
else if( mb_strpos( CHARBR, $CHAR) !== false) $OUT .= BRNL;
else if( $LSUB != $SUB or // Subblock
RE_diacritic($ALFA,$UTF8_CODE[$CPT])) $OUT .=' '; $ZEIL++; // Diakritische
if(isset($unique[$CHAR])){ $BOLD="'"; $NPAU++; } else $BOLD=;
if( $ALFA ) $OUT.= $BOLD.str_replace('|','|',$CHAR).$BOLD.BLK; // = 1 Zeichen
$LALF=$ALFA; $LSUB=$SUB; $LCPT=$CPT; }
$SUMMA = gg($NUM).' / '.($NTOT-1).' verschiedene, benannte Glyphen / in RE sind '.
'in '.($GRP-1) .' / '.count($istok).' Blöcke gegliedert.' .NL;
$OUT = str_replace(" ",BLK,$OUT). '|-'.NL. // bereinigen
'!style="vertical-align:top;text-align:left;" colspan="2"|'.$SUMMA .'|}'.NL2.// Schluss
- ↑ ', '
- ↑ ','
- ↑ '.NL. "ASCII Zeichensatz" .
' = American Standard Code for Information Interchange.' .
str_replace(CRLF,BR2,UTF8_BLOCK('U+0030')['TxT']).BRNL.NBSP.'
file_put_contents(ANKER.R_R.'Input/RE-0_Alle-Glyphen.txt',BOM.$OUT); ///////////////////////
$OUT = str_replace('$','Liste der Glyphen',LinkZch) .NL.
'== Liste der Glyphen ==' .NL2.
"Die grosse Liste zeigt alle benannten Glyphen mit ihrer Häufigkeit".
' (Anzahl oder keine) in der RE.' .NL2.
"Fett markiert sind Glyphentexte, die in der RE verwendet werden." .NL2.
'' .NL.
'{| class="wikitable tabelle-kopf-fixiert" style="line-height:1.1em;"' .NL.
'!Glyphen' .NL.
'!style="text-align:left"|Liste 1: ASCII Zeichensatz'.NL.
'!Anzahl';
$GRP = 1; $ZEIL= $NPAU=$NTOT=$LSUB=0;
foreach( $UTF8_COD as $CHAR => $ARR ){ $CPT = $UTF8_COD[ $CHAR ][0];
if( $CHAR == '\"' ) $CHAR= '"' ; // \"
if( strlen($CPT )==4 ) $COD ='U+0'.$CPT; else $COD='U+'.$CPT;
if( $LALF!=($ALFA=UTF8_BERO( $COD )) and $LALF ){ if( $ZEIL-1 ) // neue Gruppe
$OUT .= NL.'|-'.NL.'!' .$ZEIL.' / '.$NPAU.
'||colspan="2" style="text-align:left"|'.$LALF.''; // Zwischensumme
if(isset( $istok[$ALFA]) ) { $LANZ = 'Anzahl';
$LIN1 = 'Glyphen';
$LIN2 = ''.$ALFA.''; } // $LINK
else { $LIN1 = 'Glyphen'; $LIN2 = $ALFA; $LANZ = 'keine'; }
if( $ALFA ) $OUT .= NL.'|-'.NL.'!' .$LIN1 .NL. // Neuer Block
'!style="text-align:left"|Liste '.++$GRP.': '.$LIN2.NL.'!'.$LANZ;
$NUM += $ZEIL; $TO1=$ZEIL=$NPAU=0; }
if(isset($unique[$CHAR])){$BOLD=""; $NPAU++;
$ANZP='||' .rechts(g2($unique[$CHAR])); }
else {$BOLD= ; $ANZP='||';}
if( $ALFA ){
if(isset($UTF8_SubBl[$CPT]) and $LSUB!=($SUB=$UTF8_SubBl[$CPT]) ) // Subblock
$OUT .= NL.'|-'.NL.'|colspan="2"| '.$SUB.'||';
$OUT .= NL.'|-'.NL. // = 1 Zeichen
'|'.str_replace('|','|',$CHAR).'||'.
$BOLD.trim(str_replace(['small',BLK3],['small ',BLK],ucfirst(
strtolower( $UTF8_CODE[$CPT] ))),'<>').$BOLD.$ANZP; }
$LALF=$ALFA; $LSUB=$SUB; $ZEIL++; }
$OUT .= NL.'|-'.NL.'!colspan="3" style="text-align:left;"|'.$SUMMA .'|}'.NL; // Endsumme
file_put_contents(ANKER.R_R.'Input/RE-0_Liste-Glyphen.txt', BOM.$OUT);
echo NLBR.dauer(TIM).NL; exit;
}
define('KopfZch' ,'Wikisource:RE-Werkstatt/');
define('LinkZch','
|
' .NL.
'Alle Zeichen der RE |' .NL.
'Alle Glyphen Unicode |' .NL.
'Liste Glyphen' .NL.'-----'.NL );
$unique = [];
function RE_Alle_Zch ( $TODO ){ // Alle Zeichen
if( RUN or !$TODO ) return;
global $unique;
$TOT=$TO1=$ZEIL=$NUM=$LALF=0; $TAB='1 '; $GRP=1;
set_time_limit( 60 ); // RE-Display hat 2 sec
require_once ANKER.'/www/meyers/code/UTF8_BERO.php' ;
require_once ANKER.'/www/meyers/code/UTF8_Block.php';
require_once ANKER.'/www/meyers/code/UTF8_COD.php' ;
require_once ANKER.'/www/meyers/code/UTF8_CODE.php' ;
require_once ANKER.'/www/meyers/code/UTF8_SubBl.php';
CHARBR( $UTF8_COD, $UTF8_SubBl );
$ANALY = RE_strip_text( 'Input/RE-9a_Nur-Text.txt'); // Input
$INPUT = $ANALY[0]; $NNL = $ANALY[1]; // Anzahl Absätze
if(!count($unique ))
$unique = RE_count_chars ( $INPUT );
ksort( $unique, SORT_STRING );
echo NLBR.EC_.'RE-Alle_Zch: Häufigkeit der Zeichen in Paulys RE' .NLBR.
EC_.'"Input/RE-0_Alle-Zeichen.txt" nach „Wikisource:RE-Werkstatt'.
'/Alle Zeichen“ kopieren!' .NLBR.NL2;
$OUT = str_replace('$','Alle Zeichen der RE',LinkZch) .NL.
'Das Verzeichnis aller Zeichen in '.PAULY0.' (RE) – nur Text ohne ' .NL.
'Formatierung – in der Codierung utf-8 (Unicode) ist wie folgt zu lesen:' .NL.
'* Quelle ist eine ['.ELEX.'?Typ=RE&Text=RE-9a_Nur-Text_V3.zip Textdatei]'.
' (37 MB als .zip) aus dem Download in der'.
' RE-Werkstatt (Juni 2023) und symbl.cc' .NL.
'* '.g2($SUM=mb_strlen($INPUT)).' Multibyte-Zeichen, im Total ~100 MB' .NL.
'* Sortiert nach Alphabet (Block) mit Link zur Codetabelle und Fussnote als Erläuterung'.NL.
'* Glyphen als konkrete Darstellung eines Zeichens.' .NL2.
'== 1. Alle Zeichen der RE ==' .NL2.'' .NL.
'{| class="wikitable tabelle-kopf-fixiert"' .NL.
'!Alphabet (Block)||Alle Zeichen der RE (Häufigkeit / Anzahl)' .NL.'|-'.NL.
'|style="vertical-align:top;"|ASCII Zeichensatz '.
'[1]' .NL.
'|TAB NL SPACE (nicht gezählt)'.BRNL."";
foreach( $unique as $CHAR => $ANZ ){
if( isset($UTF8_COD[$CHAR])) $CPT = $UTF8_COD[$CHAR][0]; else $CPT='0022'; // \"
if( strlen($CPT)==4 ) $COD ='U+0'.$CPT; else $COD='U+'.$CPT;
if( $LALF!=($ALFA=UTF8_BERO( $COD )) and $LALF ){
$LINK=''.str_replace(BLK,NBSP,$ALFA) .
'';
$REF ='[2]';
$OUT.=NBSP." (".gg($TO1).' / '.$ZEIL.')' .NL.'|-'.NL. // Zwischensumme
'|style="vertical-align:top;"|'.$LINK.BLK.$REF .NL.
RE_rtl( $CHAR, $ALFA ).""; // Neuer Block
$NUM += $ZEIL; $TOT+=$TO1; $ZEIL = $TO1=0; }
else if( !$LALF ) /* nix im Anfang */ ;
else if( mb_strpos( CHARBR,$CHAR )!==false ) $OUT .= "".BRNL."";
else if(RE_diacritic($ALFA,$UTF8_CODE[$CPT])) $OUT .=' '; // Diakritische
$OUT .= str_replace('|','|',$CHAR).BLK; // = 1 Zeichen
$LALF = $ALFA; $ZEIL++; $TO1 +=$ANZ; }
$SUMMA = '!style="vertical-align:top;text-align:left;" colspan="2"|'.g2($TOT). // Endsumme
' Glyphen sind in Paulys RE digitalisiert, gegliedert in ' .$NUM.
' verschiedene Glyphen in '.$GRP.' Blöcken'.BRNL .''.g2($SUM-$TOT).
' Leerzeichen (SPACE Wortgrenze, TAB Tabulator, NL neue Zeile),' .NL.
'davon '.gg($NNL).' Absätze (NL)'.NLBR.gg($SUM).' Zeichen'; // -'.NL.$SUMMA .NL.'
else $OUT = BOM.'"'.date('Y-m-d H:i:s').CSV.'S'.CSV.'Link zu einer Wikipedia'.CSV.'Hinweis'.CSV.'Kurztext"';
echo ' ab dem Lemma '.$ANFA.' ('.$OPTI[$ANFA].') auf Zeile '.substr_count(NL.$OUT,NL).':'.NLBR;
foreach( $ELEM as $LINE ){ // alle Lemmata
set_time_limit( 15 ); // getrusage() nutzen?
$DEF = explode( CSV, $LINE );
$LEMMA = $LEM = substr($DEF[0], 4 );
if($ANFA) if($ANFA!=$LEMMA) continue;
else {$ANFA = ; continue;}
if($WP = $DEF[4] ){
$OUT .= NL.'"RE:'.$LEMMA.CSV .CSV.$WP .CSV.'✓' .CSV.$OPTI[$LEMMA].'"';
echo '+, '; continue; }
if($LAUF =(int)substr($LEMMA,strrpos($LEMMA,BLK)) and $LAUF!=1){
$OUT .= NL.'"RE:'.$LEMMA.CSV .CSV .CSV.'#' .CSV.$OPTI[$LEMMA].'"';
echo $LEMMA.'#, '; continue; }
if( $LAUF==1 and isset( $OPTI[$LEM=substr($LEM,0,strrpos($LEM,BLK))] )){
$OUT .= NL.'"RE:'.$LEMMA.CSV .CSV .CSV.'1' .CSV.$OPTI[$LEMMA].'"';
echo $LEMMA.'#, '; continue; }
$ISOK= 0;
if(hat_greek($LEM)){ $S = 'el'; // Test: $LEM = 'Αντήνωρ ο Μιλήσιος';
if( URL_exists( $URL = 'https://'.$S.'.wikipedia.org/wiki/'.RE_B($LEM) ))
$ISOK = $S; }
else foreach(SPRA as $S => $SPRACHE) if($S!='el')
if( URL_exists( $URL = 'https://'.$S.'.wikipedia.org/wiki/'.RE_B($LEM) )){
$ISOK = $S; break; }
if($ISOK){$OUT .= NL.'"RE:'.$LEMMA.CSV.$S.':'.CSV.$URL.CSV.SPRA[$S].CSV.$OPTI[$LEMMA].'"';
echo $LEMMA.'✓ '; $NN++;}
else { $OUT .= NL.'"RE:'.$LEMMA.CSV .CSV .CSV.'nix' .CSV.$OPTI[$LEMMA].'"';
echo $LEMMA.', '; }
if( fmod(++$I,10)==0 ) file_put_contents( ANKER.R_R.$FILE, $OUT );
if( $I >= 20 ) break; }
return NLBR.NLBR.date('H:i:s').' / '.$FILE.' => '.$NN.' neue Referenzen bei '.($I+1).
' geprüften Lemmata, bis Zeile '.substr_count(NL.$OUT,NL).'.';
}
function SPERR( $INP, $TAG, $NEW1,$NEW2, $TY ){ // TAG aus HTML => WIKI-Code umwandeln
$NXT = $INP; $OUT = ; $NN = 0; // Loops
if( $TY == 0 ) { $TYP = ''; $TY2 = $TYP;} // In/Out ist HTML
else { $TYP = '}}'; $TY2 = ; } // In/Out ist Wiki-Format
if($TYP=='') $GT = '>'; else $GT = ;
$PLUS = strlen( $TYP);
$LEN = strlen( $TAG); // ' style="font-weight:bold;">'
$POS = strpos($INP,$TAG);
while($POS!==false and $NN++ < 700999){
$END = strpos($INP,$TYP,$POS); // das schliessende Span
$OBJ = substr($INP,$POS+$LEN,$END-$POS-$LEN);
$NXT = substr($INP,$END+$PLUS);
if(substr($OBJ,-1)==BLK){ $OBJ =rtrim($OBJ); $NXT = BLK.$NXT;}
if($NEW1==$NEW2 and hat_greek($OBJ) ) // greek + kursiv
$OUT.= substr($INP,0,$POS).$GT .$OBJ.$TY2; // nix tun
else {
if( strpos($OBJ,'$$$') ){
$OBJ = str_replace( ' $$$', '$$$' ,$OBJ);
$OBJ = str_replace( '$$$',$NEW2.'$$$'.$NEW1,$OBJ);}
$OUT.= substr($INP,0,$POS).$GT .$NEW1. $OBJ.$NEW2.$TY2 ;}
$INP = $NXT;
$POS = strpos($INP, $TAG); }
return $OUT.$NXT;
}
function newLEMMA($ISNEW, &$LEMMA, &$ARTIK ){ // ein neues Lemma bestimmen
// echo 'L/'.$ISNEW.'/'.$LEMMA.'/'.$ARTIK.'';
global $ALLw, $ALLweit, $ALLart;
if( $P =strpos($ISNEW,'{{SperrSchrift') ) $ISNEW = substr($ISNEW,0,$P);
$ISNEW = trim($ISNEW,'[:]'); $ISOLD = $ISNEW;
if( isset( $ALLweit[$ISNEW]) ) $ISNEW = $ALLweit[$ISNEW]; // Weiterleitung
if( (int)$ISNEW or in_array( trim ( $ISNEW,'])'),['a','aa','aaa','b','c', // Unterartikel
'd','e','f','g','h','i','j','k','l','m','n','o','p']) ){
$ISNEW = str_replace( [BLK,'.'],[,')'], $ISNEW ); // 1 a => 1a, 23.36 => 23)
if( $P= strpos($ISNEW,')'))$ISNEW = substr($ISNEW,0,$P); // 3) => 3
if(($P=strrpos($ARTIK,BLK)) and (int)substr($ARTIK,1+$P) ) // Aqua, Aquae 7
$LEMMA = 'RE:'.substr($ARTIK,0,$P).BLK.trim($ISNEW,']),.');
else $LEMMA = 'RE:'. $ARTIK .BLK.trim($ISNEW,']),.');
if( isset($ALLw[$LEMMA ]) ) return; // Narses 13
if( isset($ALLw[$LEMMA.'.']) ) { $LEMMA.='.'; return;} // Sempronius 88ff.
$TT = 'RE:'.substr($ARTIK,0,strrpos($ARTIK,BLK)).BLK.scan($ISNEW,1,'-');
if( isset($ALLw[$TT ]) ) { $LEMMA =$TT; return;} // Neilos 1a-f
$TT = 'RE:'.to_latein( substr($LEMMA,3) );
if( isset($ALLw[$TT ]) ) { $LEMMA =$TT; return;} // Ἀνδρών 9a
if( substr($LEMMA,0,7)=='RE:Aal ') $LEMMA ='RE:Aal'; // nicht RE:Aal 2
return; } // nix gefunden (int)
if( (int)scan($ISNEW,2,BLK) ) // Aal 2)
$T1 = trim(scan($ISNEW,1,BLK) ,'.,').BLK.trim(scan($ISNEW,2,BLK),')');
else if( (int)scan($ISNEW,3,BLK) ) // Aqua, Aquae 3
$T1 = trim(scan($ISNEW,1,BLK).BLK.scan($ISNEW,2,BLK),'.,').BLK.trim(scan($ISNEW,3,BLK),')');
else $T1 = 'xy';
$T2 = trim( $ISNEW,'(),. ');
foreach([$T1,$T2] as $T) if($T!='xy' ){ $ARTIK= $T ;
if(isset($ALLart[ $ARTIK])) break;
if(isset($ALLw['RE:'.$ARTIK])) break; $ARTIK= $ISNEW ;
if(isset($ALLw['RE:'.$ARTIK])) break; $ARTIK= $T .' 1';
if(isset($ALLw['RE:'.$ARTIK])) break; $ARTIK= $T .' 2';
if(isset($ALLw['RE:'.$ARTIK])) break; $ARTIK= $T .' 3';
if(isset($ALLw['RE:'.$ARTIK])) break; $ARTIK= $T .' a';
if(isset($ALLw['RE:'.$ARTIK])) break; $ARTIK=str_replace('ff.',,$T);
if(isset($ALLw['RE:'.$ARTIK])) break; $ARTIK= to_latein ($T) ;
if(isset($ALLw['RE:'.$ARTIK])) break; $ARTIK= to_latein ($T).' 1';
if(isset($ALLw['RE:'.$ARTIK])) break; $ARTIK= to_latein ($T).' 2';
if(isset($ALLw['RE:'.$ARTIK])) break; $ARTIK= RE_greek ($T, 0);
if(isset($ALLw['RE:'.$ARTIK])) break;}
if($ARTIK )
$LEMMA = 'RE:'.$ARTIK;
}
function RE_ltr( &$TXT, $HAT ){ // left trim NL.'([,'
$TMP = leftrim (ltrim($TXT,NL."'([," ));
if($TMP!=$TXT){$KLA = mb_substr($TXT, 0 ,mb_strlen( $TXT)-mb_strlen($TMP));
$TXT = $TMP;}
else $KLA = ;
if(substr($TXT,0,15)=='
foreach( $GRUEN as $LINE ){ // hat Links
$DEF = explode( CSV, mb_substr($LINE,1,-1) ); $LEMMA = $DEF[0];
if(isset( $ALL[$LEMMA][0] ) ) $ALL [$LEMMA][0]['grün'] = $DEF[1];
else if($MSG) echo NLBR.'Lemma grün '.$LEMMA.' fehlt?'; }
if($MSG) echo '';
foreach( $INFOS as $LINE){ // c. Info Lua-Fehler in Modul:RE, Zeile 445: Es wurde der Parameter BAND nicht gesetzt, dieser ist notwendig
$DEF = explode( CSV, mb_substr($LINE,1,-1) ); $NEW=0; // $J = $DEF[ 2]
$J = J_Band ( $LEMMA=$DEF[0],$DEF[16] ); // Band = $DEF[16]
if( strpos(RE_Spez_Lemma,$LEMMA.';')!==false and !isset($ALL[$LEMMA][0]['n_abc']) ){
$ALL[$LEMMA][0]['n_abc'] = ++$NNH2; $NEW=1;
}else if(!isset($ALL[$LEMMA])){$ALL[$LEMMA] = [];
if($MSG) echo NLBR.z2(++$NN).': Warnung: Ein Lemma fehlt im Register '.
RE_Regi_at($DEF[12],substr($LEMMA,3)).' unter '.$LEMMA; $NEW=1;}
if(!isset($ALL[$LEMMA][$J]) ){ $ALL[$LEMMA][$J] = [];
if( $J and strpos(RE_Spez_Lemma, $LEMMA.';')===false and $MSG )
echo NLBR.z2(++$NN).': Info: Der Band '.RE_Regi_at($DEF[12],substr($LEMMA,3)).
' hat auch einen Nachtrag '.$J.' zu '.$LEMMA; $NEW=1;}
$ALL[$LEMMA][$J]['Quell' ] = 'RE-4_Info';
$ALL[$LEMMA][$J]['Data' ] = Jok_Band($LEMMA,$DEF[16]); // alle Beiträge sind ok
$ALL[$LEMMA][$J]['Nachtrag'] = $J ;
$ALL[$LEMMA][$J]['Nr' ] = $DEF[ 1];
$ALL[$LEMMA][$J]['RE Autor'] = $DEF[ 3];
$ALL[$LEMMA][$J]['KB' ] = $DEF[ 5];
$ALL[$LEMMA][$J]['Plaus' ] = $DEF[ 7];
$ALL[$LEMMA][$J]['Diskus' ] = $DEF[ 9];
$ALL[$LEMMA][$J]['Sperre' ] = $DEF[10];
$ALL[$LEMMA][$J]['Wleit' ] = $DEF[11];
$ALL[$LEMMA][$J]['Datum' ] = $DEF[12];
$ALL[$LEMMA][$J]['Anfang' ] = $DEF[13];
$ALL[$LEMMA][$J]['Band-1' ] = $DEF[16];
$ALL[$LEMMA][$J]['S von-1' ] = $DEF[17];
$ALL[$LEMMA][$J]['S bis-1' ] = $DEF[18];
$ALL[$LEMMA][$J]['Vor-1' ] = $DEF[19];
$ALL[$LEMMA][$J]['Nach-1' ] = $DEF[20];
$ALL[$LEMMA][$J]['SORTIERUNG'] = $DEF[21];
$ALL[$LEMMA][$J]['Stand' ] = $DEF[22];
$ALL[$LEMMA][$J]['Text' ] = $DEF[23]; // Kurztext aktuell
$ALL[$LEMMA][$J]['Schopf' ] = $DEF[27];
$ALL[$LEMMA][$J]['ist†' ] = $DEF[28];
$ALL[$LEMMA][$J]['ist*' ] = $DEF[29];
$ALL[$LEMMA][$J]['NACHTRAG'] = $DEF[30];
$ALL[$LEMMA][$J]['ÜBERSCHRIFT']= $DEF[31];
$ALL[$LEMMA][$J]['VERWEIS' ] = $DEF[32];
if($NEW){
$ALL[$LEMMA][$J]['Scan' ] = $DEF[ 6];
$ALL[$LEMMA][$J]['Band' ] = trim($ALL[$LEMMA][$J]['Band-1' ]);
$ALL[$LEMMA][$J]['S von'] = $ALL[$LEMMA][$J]['S von-1'] ;
$ALL[$LEMMA][$J]['S bis'] = $ALL[$LEMMA][$J]['S bis-1'] ;
$ALL[$LEMMA][$J]['liber'] = ;
$ALL[$LEMMA][$J]['R-Vor'] = ;
$ALL[$LEMMA][$J]['italic'] = ;
} else if(str_replace('OFF',,$ALL[$LEMMA][$J]['Vor-1' ]) != $ALL[$LEMMA][$J]['R-Vor' ] or
str_replace('OFF',,$ALL[$LEMMA][$J]['Nach-1']) != $ALL[$LEMMA][$J]['R-Nach'] )
if($MSG and $ALL[$LEMMA][$J]['R-Vor'] and $ALL[$LEMMA][$J]['R-Nach'] and $J==0)
echo NL.'';
$ARTI = $ALL[$LEMMA][$J];
if(isset($ARTI['greek'])and $ARTI['greek' ]=='j' and $ARTI['Text'] and
stripos($ARTI['Text'],to_latin(substr($LEMMA,3)) )!==0 ){
$ALL[$LEMMA][$J] ['Lücke'] = 'λ'; // Griechisch => Latein
// echo NLBR.to_latin(substr($LEMMA,3)).' # '.$ARTI['Text'];
}
if($ARTI['Vor-1' ]=='OFF' and $LEMMA!='RE:Vorwort (Band I)' ) // Kein Vorgänger
$ALL[$LEMMA][$J] ['Lücke'] = 'Vor';
if($ARTI['Nach-1']=='OFF' and $LEMMA!='RE:Verzeichnis der Autoren (Register)')
$ALL[$LEMMA][$J] ['Lücke'] = 'Nach'; // Kein Nachfolger
$ALL_LEMMA[substr($LEMMA,3,99)] = 2;
if( isset( $ARTI['Autor']) and isset($ARTI['RE Autor']) and
$ARTI['Autor'] and $ARTI['RE Autor'] != 'OFF'){
if(!isset($NAMEN[$ARTI['Autor']]) ) $NAMEN[$ARTI[ 'Autor']] = [];
if( isset($NAMEN[$ARTI['Autor']] [$ARTI['RE Autor']]) )
$NAMEN[$ARTI['Autor']] [$ARTI['RE Autor']]++;
else $NAMEN[$ARTI['Autor']] [$ARTI['RE Autor']] = 1; }
$DEF = explode('|', $ARTI['Datum'] );
if( isset($DEF[2]) )
$ALL[$LEMMA][$J]['Mod' ] = z2($DEF[2]).'.'.$DEF[1].'.'.((int)$DEF[0]-2000);
if($ALL[$LEMMA][$J]['Band-1'] != $ALL[$LEMMA][$J]['Band' ] )
echo NLBR.'#Band['.$J.'] '.$LEMMA.': '.$ALL[$LEMMA][$J]['Band' ].
' != '.$ALL[$LEMMA][$J]['Band-1'];
}
foreach( $NAMEN as $AUTO => $LISTE ){ // Autoren
arsort( $LISTE ); // zuerst der Häufigste
if( $AUTO.'.' != key($LISTE) )
$OAUTO[$AUTO] = key($LISTE);}
foreach( $ELEM as $LEMMA){ // d. RE-1_Lemmata
$ALL[$LEMMA][0]['Quell'] = 'RE-1_Lemma';
if(isset($ALL[$LEMMA][0]['Vor-1']) and $ALL[$LEMMA][0]['Band']!='R' and
substr($ALL[$LEMMA][0]['Band'],0,1)!='S'){
$VOR = 'RE:'.$ALL[$LEMMA][0]['Vor-1' ];
$NACH = 'RE:'.$ALL[$LEMMA][0]['Nach-1'];
if($MSG and isset($ALL[$VOR] [0]['Nach-1']) and 'RE:'.$ALL[$VOR] [0]['Nach-1']!=$LEMMA)
echo NL.'';
if($MSG and isset($ALL[$NACH][0]['Vor-1']) and 'RE:'.$ALL[$NACH] [0]['Vor-1']!=$LEMMA)
echo NL.''; }}
if($MSG) echo '
N'.$TD.'_Band_'.$TD.'S'.$TD.'Lemma /N'. $TD.'vor man'.$TD.'nach Register'.$TD.'nach man'.$TD.'nach Register'.' |
'.(++$NN2) .$TD. $ALL[$LEMMA][$J]['Band' ].$TD.$ALL[$LEMMA][$J]['S von'].$TD.$LEMMA.' /'.$J.$TD. |
A_vor: '.$TD.$ALL[$LEMMA][$J]['Band'].$TD.$ALL[$LEMMA][$J]['S von']. $TD.$LEMMA.$TD.$VOR.' |
A_nch: '.$TD.$ALL[$LEMMA][$J]['Band'].$TD.$ALL[$LEMMA][$J]['S von']. $TD.$LEMMA.$TD.$NACH.' |
foreach( $WEITER as $LINE){ // e. Weiterleitung
$DEF = explode(';', $LINE ); // RE:Abalas limen; RE:Ἀβάλας λιμήν
if( isset ( $ALL[$LEMMA=$DEF[1] ] )){
if(isset($ALL[$LEMMA][0]['Redir'])) $ALL[$LEMMA][0]['Redir'].=';'.$DEF[0]; // increment
else $ALL[$LEMMA][0]['Redir'] = $DEF[0];}
else NLBR.'Redir ins Leere '.$LINE;
$W_Leit[$DEF[0]] = 'j'; }
$NeuLem = implode( $NeuLemma=[] );
foreach( $VERSI as $LINE ){ // f. Version
$DEF = explode( CSV, mb_substr($LINE,1,-1) ); $LEMMA = $DEF[0];
if( isset( $ALL[$LEMMA]) ){
if( $DEF[1] == 0 ) // letzte Bearbeitung
foreach($ALL[$LEMMA] as $J => $LINE ) // Nachträge
$ALL[$LEMMA][$J]['Benutzer'] = $DEF[7];
if( $DEF[11] == 'j') // Datum Ersterfassung
foreach($ALL[$LEMMA] as $J => $LINE )
$ALL[$LEMMA][$J]['first']=z2($DEF[4]).'.'.$DEF[5].'.'.((int)$DEF[6]-2000);}}
foreach( $KORRI as $LINE ){ // g. korrigieren
$DEF = explode(';',$LINE); $LEMMA = $DEF[0];
if( isset ( $ALL[$LEMMA]) ){
foreach( $ALL[$LEMMA] as $J => $LINE )
if(isset($ALL[$LEMMA][$J]['Benutzer']) and
$ALL[$LEMMA][$J]['Benutzer'] != 'ELexikon' )
$ALL[$LEMMA][$J]['k'] = 'k';
} else if( strpos( $LEMMA,'/' ) === false ) // RE:Herakles/IV
echo NLBR.EC_.'Woher die Korrektur? '.$LEMMA; }
$LN=0;
foreach( $TOP10 as $LINE ){ // h. grösste Artikel
$DEF = explode(';',$LINE);
if( strpos($LINE,'colspan=') )
$LONG[$LN++] = ['Band'=>$DEF[0],'Text'=>$DEF[1] ];
else {
$GROSS = str_replace('[[RE:', '$[[RE:', $DEF[1] );
$BIGER = explode('$',$GROSS);
foreach( $BIGER as $BBB) if($BBB){
$LEMMA = trim(scan($BBB,1,'[|' ));
$BIG = trim(scan($BBB,2,'[|]'));
$LONG[$LN++] = ['Band'=>$DEF[0], 'Lemma'=>$LEMMA, 'Big'=>$BIG, 'BigA'=>trim($DEF[2]) ];
if(!isset($ALL[$LEMMA]) ) echo NLBR.'Grosse Artikel: '.$DEF[0].' ?= '.$LEMMA.' — '.$DEF[2];
else { $ALL[$LEMMA][0]['Big' ] = $BIG; // üblicher Name
$ALL[$LEMMA][0]['BigA'] = trim($DEF[2]); }}}} // Autor
$FIRST = 'RE:Vorwort (Band I)';
$HTTP = ELEX.'?Typ=RE&Text='; // Option
$LOCAL // = '../../../www/meyers/RE/'; // C$1
= ELEX .'RE/'; // C$1
$PAULY = PAULY.'/Register/';
$ALL[$FIRST][0][ WIKI ] = 'hyperlink(B$1&wechseln(A2;""?"";""%3F"")&""#""'.
'&wechseln(H2;"" "";""_"") ;""x"")'; // B2
$ALL[$FIRST][0][$LOCAL] = 'hyperlink(C$1&F2 ; M2 )'; // C2
$ALL[$FIRST][0][$PAULY] = 'hyperlink(B$1&D$1&H2&""#""&wechseln(TEIL(A2;4;99);'.
'"" "";""_""); TEIL(F2;1;LÄNGE(F2)-4))'; // D2
$ALL[$FIRST][0]['Alfa'] = 'hyperlink(B$1&D$1&J2&""#""&wechseln(TEIL(A2;4;99);'.
'"" "";""_""); J2 )'; // E2
$SPALTEN = [ WIKI, $LOCAL, $PAULY, 'Alfa', 'Scan', 'Nachtrag','Kapi',
'Band', 'BdN', 'Bdk', 'abc', 'S von', 'S bis', 'S tot', 'red', 'Status',
'Lücke', 'Autor', 'Geburt','liber', 'RE Autor','frei', 'color',
'ist*', 'ist†', 'Schopf','VERWEIS','siehe', 'is_redir','Redir',
'Wiki', 'Wiki2', 'WD-j', 'WS',
'SORTIERUNG', 'greek', 'Quell', 'Data', 'Big', 'BigA',
'Stand', 'k', 'KB', 'Plaus', 'Mod', 'Benutzer','first', // ++ date of download
'touch', 'Diskus', 'Sperre','Wleit', 'LaufA', 'Lauf', 'Lauf2',
'n_abc', 'n_scan', 'grün', 'Anfang', 'Text', ];
$SPALTE2 = ['Band', 'S von', 'S bis', 'WP', 'WS','WD', 'Autor', 'Status','Text'];
$OUT = '"'.date('Y-m-d H:i'); // Lemma
$OUT2 = '"'.date('Y-m-d');
foreach($SPALTEN as $SP) $OUT .= CSV.$SP;
foreach($SPALTE2 as $SP) $OUT2.= CSV.$SP;
$OUT .= '"'.NL; $OUT2.= '"'.NL; $NEUES = ;
$ALLart = '<?php $ALLart = array( // von localhost genutzte Vorverarbeitung: HTML => WIKI-fmt';
$ALLart2 = '<?php $ALLart2 = array( // Grössere Artikel, wenn Key != Lemma: HTML => WIKI-fmt';
$ALLbox = '<?php $ALLbox = array( // Stichworte der Infobox als Link';
$RBDE = RE_BAND; $JAHR = (int)date('Y'); // mit 2x4 = 8 Arrays
$CHECK ='"Scan'.CSV.'Nr.'.CSV.'Spalten'.CSV.'Band'.CSV.'Link'.CSV.'Scan'.CSV.'Anfang"';
foreach( $RBDE as $BD => $ATTR ){ // Key = Spalte je Band
$RBDE[$BD]['conN'] = []; $RBDE[$BD]['conN'][0] = 'Bd:'.$BD; // nächste Lemma-Nr.
$RBDE[$BD]['cont'] = []; $RBDE[$BD]['cont'][0] = 'Bd:'.$BD; // das $LEMMA
if( $BD=='R' ) $DIV = 2; else $DIV = 4; // Spalten je Doppelseite
$LAST = RE_BAND[$BD][2]+(RE_BAND[$BD][3]-RE_BAND[$BD][1]+1)*$DIV;
$RBDE[$BD]['cont'][-1] = $LAST; // Nr. des letzten Lemmas
$CHECK.= NL.'"'.RE_BAND[$BD][3].CSV.RE_BAND[$BD][0]. CSV.($LAST-1).CSV.$BD.CSV.CSV
.RE_BAND[$BD][0]. z4(RE_BAND[$BD][3]).CSV. RE_BAND[$BD][5].'"'; }
$NNH3 = 130000; $N=$F=$P=$STAR=$ENDE=$NNH=0; $LBAND='I,1'; $K=$OF1=$OFF=$OFFSET=30; $LIM=80;
$KOPF = '×100, | = 10 Artikel, . 1 Artikel, ₀ gemeinfrei, ■ blau, / neuer Band, '.
'1₈ = 18% erstellt, * wenig, ✓ fertig '.BLK4.' Band Spalte Artikel';
$INIT = ; for($i=0; $i++<$OFF;) $INIT .='-';
$UNDER = ; for($i=0; $i <=100;) if(!fmod($i++,10))$UNDER.='|';else $UNDER.='_';
$LOCH = $KOPF.NL.BLK3.'0 '.$INIT; $LFC='A'; $WP=$NACHT=0;
echo NLBR.date('H:i:s').' / Mitte ... '.dauert().NL; // Mitte
foreach($ALL as $LEMMA => $NACHTRAG ) // i. Werkstatt
foreach( $NACHTRAG as $J => $LINE ){
$ARTI = $LINE; // lokale Variable $ARTI
$ARTI['N'] = ++$N;
if( $LAUF = substr($LEMMA,strrpos($LEMMA,BLK)) and (int)$LAUF ){
$ARTI['Lauf' ]= (int) $LAUF; $ARTI['LaufA'] = trim($LAUF );
$ARTI['Lauf2']= ltrim( $LAUF ,'0123456789 ');}
if( $J==0 ) RE_Plaus_Art( $NACHTRAG, $LEMMA );
if( isset($TOUCH[$LEMMA]) ){
$ARTI['WD-j' ]= $TOUCH[$LEMMA][0]; // Wikidata
$ARTI['touch']= substr($TT=$TOUCH[$LEMMA][1],6,2).'.'.substr($TT,4,2). // tt.mm.yy
'.'.substr($TT,2,2); }
if( isset( $ARTI['Band']) ){ $VON =(int)$ARTI['S von'];
$BAND = $ARTI['Band']; $BIS =(int)$ARTI['S bis'];
if( $J == 0 ){ $CHAR = '.'; // Hauptartikel
$FC = mb_substr(to_latin(mb_substr($LEMMA,3,1)),0,1);
if($FC < $LFC or ord($FC)> ord($LFC)+2 ) $FC = $LFC;
if(isset($ARTI['frei'])and $ARTI['frei']=='mint') $CHAR = '₀';
if(isset($ARTI['red']) and $ARTI['red'] =='blau') {
if( $ARTI['Status'] == 'FER' ) $CHAR = '■';
elseif($ARTI['Status']== 'KOR' ) $CHAR = '▬';
else $CHAR = '□';
if( fmod($K, 100) < $LIM ) $F++; }
if($FC != $LFC and $LBAND != 'R' ) $CHAR = $FC;
if($BAND != $LBAND and $LBAND != 'R' ) $CHAR = '/';
$LOCH .= $CHAR; $LFC = $FC;
if( !fmod(++$K, 100) ) { $P += $F;
$LOCH .= loch($F+$OF1,$BAND,$VON,$LEMMA).NL;
if( $STAR ) $ST = BLK2.$STAR; else $ST = ;
if( !fmod($K,2e3) ) { $LOCH.= BLK4.$UNDER.BLK4.
round(($P+$OFF)/20).'% erfasst 👍'.$ST.NL; $P = 0; $OFF=0;}
$LOCH .= sprintf('%4d',$K/100).BLK; $F = 0; $OF1 = 0;}
if( $LBAND != 'R' ) $LBAND = $BAND;
} else $NACHT++; // Nachträge
if( !isset( $ARTI['n_num'] ) ) $ARTI['n_num'] = 0;
if( !isset( $ARTI['n_abc'] ) ){$ARTI['n_abc'] = ++$NNH3;
echo NLBR.EC_.'prüfe im ABC '.gg($NNH3).BLK.$ARTI['Quell'].' => Band '.
$BAND.': '.$LEMMA.' Vorgänger/Nachfolger';}
if( $ARTI['n_abc' ] < 120000 ) ++$NNH ;
if( !isset( $ARTI[ 'abc' ]) ) $ARTI[ 'abc' ] = '_';
if( !isset( $ARTI['R-Nach']) ) $ARTI['R-Nach'] = ;
if( $ARTI[ 'S bis'] == 'OFF' ) $ARTI['S bis' ] = ; // Spalten optimieren
if( (int) $ARTI[ 'S bis'] > (int) $ARTI['S von' ]+1 )
$ARTI[ 'S tot'] = (int) $ARTI['S bis' ]-(int)$ARTI['S von'];
elseif(isset($ARTI['S nxt']) and is_numeric($ARTI['S von']) and // keine 'Spalte bis'
(int) $ARTI[ 'S nxt'] > (int) $ARTI['S von' ]+1 )
$ARTI[ 'S tot'] = (int) $ARTI['S nxt' ]-(int)$ARTI['S von'];
if( isset($ARTI[ 'S tot']) and !$ARTI['S bis' ] )
$ARTI[ 'S bis'] = (int) $ARTI['S von' ]+(int)$ARTI['S tot'];
$S = $VON; // $S = Spalte von = key
if( !isset( $RBDE[$BAND]['ersN'][$S ] ) // erstes Lemma in der Spalte
or $RBDE[$BAND]['ersN'][$S ] > $ARTI['n_num']
) { $RBDE[$BAND]['ersN'][$S ] = $ARTI['n_num']; // ersN = Laufnr erstes Lemma
$RBDE[$BAND]['erst'][$S ] = $LEMMA; // erst = Text erstes Lemma
$RBDE[$BAND]['e_aN'][$S ] = $ARTI['n_abc']; // e_aN = Laufnr nach ABC
$RBDE[$BAND]['e_AA'][$S ] = $ARTI[ 'abc']; } // e_AA = im Register ('ar')
if( !isset( $RBDE[$BAND]['conN'][$S ] ) // continue = letztes Lemma in Spalte
or $RBDE[$BAND]['conN'][$S ] < $ARTI['n_num']
) { $RBDE[$BAND]['conN'][$S ] = $ARTI['n_num']; // conN = Laufnr Lemma im Band
$RBDE[$BAND]['cont'][$S ] = $LEMMA; // cont = Text letztes Lemma
$RBDE[$BAND]['c_aN'][$S ] = $ARTI['n_abc']; // c_aN = Laufnr nach ABC
$RBDE[$BAND]['c_AA'][$S ] = $ARTI[ 'abc']; } // c_AA = im Register ('ak')
if( isset( $ARTI['S tot']) and 2<=(int)$ARTI['S tot']) { // Lemma hat 3 oder mehr Spalten
$S2 = $S + 2; // die übernächste Spalte
if(!isset($RBDE[$BAND]['ersN'][$S2] )
or $RBDE[$BAND]['ersN'][$S2] > $ARTI['n_num'] // in Supplementen nach
) { $RBDE[$BAND]['ersN'][$S2] = $ARTI['n_num']; // einem Zwischenkapitel
$RBDE[$BAND]['erst'][$S2] = $LEMMA;
$RBDE[$BAND]['e_aN'][$S2] = $ARTI['n_abc'];
$RBDE[$BAND]['e_AA'][$S2] = $ARTI[ 'abc']; }
if(!isset($RBDE[$BAND]['conN'][$S2] )
or $RBDE[$BAND]['conN'][$S2] < $ARTI['n_num'] // Anfang UND Ende füllen
) { $RBDE[$BAND]['conN'][$S2] = $ARTI['n_num'];
$RBDE[$BAND]['cont'][$S2] = $LEMMA;
$RBDE[$BAND]['c_aN'][$S2] = $ARTI['n_abc'];
$RBDE[$BAND]['c_AA'][$S2] = $ARTI[ 'abc']; }}
$ARTI['Bdk' ]= no_halb( $BAND );
if( isset( $W_Leit[$LEMMA]) ) $ARTI['is_redir']= 'j';
if( !isset( $ARTI['Scan']) ) $ARTI['Scan' ]= RE_SCAN( $BAND,$VON,$LEMMA,0);
if( !isset( $ARTI['Autor']) ) $ARTI['Autor' ]= ; // Autor optimieren
if( trim( $ARTI['Autor']) == ){$ARTI['Autor' ]= 'OFF';
$ARTI['RE Autor']= 'OFF';}
elseif(!isset( $ARTI['RE Autor'])) {
if( isset($OAUTO[$ARTI[ 'Autor']]))$ARTI['RE Autor']= $OAUTO[ $ARTI['Autor'] ];
else $ARTI['RE Autor']= $ARTI['Autor'].'.';}
if( $ARTI['Autor'] == 'OFF' ){$ARTI['RE Autor']= 'OFF';
$ARTI['liber' ]= ;}
if( isset($ARTI['ist†' ])and $ARTI['ist†']>JJ52) $ARTI['liber'] = $ARTI['ist†' ] + 71 ;
if( $ARTI['liber'] == ) $ARTI['Geburt' ]= RE_Geburt($ARTI['Autor' ] ) ;
if( $J ) $ARTI['Nachtr' ]= 'ON';else $ARTI['Nachtr' ]='OFF';
if( $J == 1 ) $ARTI['Übersch' ]= 'ON';else $ARTI['Übersch']='OFF';
if( $ARTI['italic'] =='kursiv') $ARTI['Verweis' ]= 'ON';else $ARTI['Verweis']='OFF';
if( isset($ARTI['Status']) and $ARTI['Status'] != 'UNK' ) $ARTI['n_scan' ]= ;
$ORT = RE_ort( $LEMMA );
if( trim($ORT[1]) and $ORT[1]!=1 ) $ARTI['fett' ] = trim($ORT[1].BLK.$ORT[2]).')';
else if($ORT[1]==1 ) $ARTI['fett' ] = substr($LEMMA,3) .')';
else $ARTI['fett' ] = substr($LEMMA,3);
if(!isset($ARTI['Text'] ) ) $ARTI['Text' ] = ;
$ARTI['Text'] = str_replace ( ['Nr.' ,BLK2 ], // ON = Ort
['Nr. ',BLK ],trim($ARTI['Text']));// PN = Person
if( isset($ARTI['SORTIERUNG'])and isset($ARTI['greek' ]) and
$ARTI['Text']== and $ARTI['greek' ] == 'j' )
$ARTI['Text'] = $ARTI['SORTIERUNG'];
$ARTI['Text'] = RE_strip( $ARTI['Text'] ); // yy => yy
if($J){if($ARTI['Text']== ) $ARTI['Text'] = '_'.$J; // Default-Kurztext
} else { /* $J==0 */ $LEM2 = substr($LEMMA,3); // ohne Nachträge
if( isset($ARTI['Anfang']) ) $LL1 = ''.$LEM2.''; // Lemma verfügbar
else $LL1 = '' .$LEM2.'';
$TEMP = NL."'".$LEM2."' =>'" .$LL1."', // ".$BAND.'_'.$VON.'_'.$BIS;
if(substr($TEMP,-2) == '_0' ) $TEMP = substr($TEMP,0,-2).' $ '; // $BIS = 0
else $TEMP.= ' $ ';
if( $ARTI['Text'] == '(-)') $KUR0 = ; // Kurztext
else $KUR0 = $ARTI['Text'];
if((in_array($KUR0,[,'ON','PN','Ort','Person']) or mb_strlen($KUR0)<9) and
isset( $ARTI['Anfang']) ){$KUR0 = $ARTI['Anfang'];
$NRK = scan($KUR0,1,BLK);
if(strlen(trim($NRK,'0123456789)[]'))<=1 and strpos($LEMMA,trim($NRK,')[]')) )
$KUR0 = trim(substr($KUR0,strlen($NRK)),BLK);
if(scan($KUR0,1,BLK)=='s.')$KUR0 = trim( $KUR0, '.');
} else $KUR0 = str_replace(['ON','PN'],['Ort','Person'],$KUR0);
if(mb_strlen($KUR0) > 80 ){$KUR0 = mb_substr( $KUR0,0,80);
$KUR0 = substr( $KUR0,0,strrpos($KUR0,BLK));}
if( $KUR0 == ) $KUR0 = '(-)';
if( substr( $KUR0,0,1)=='=') $KUR0 = "'".$KUR0 ; // ! EXCEL-Formel '=
$ALLart .= RE_justA( $TEMP .$KUR0 );
if( strpbrk( $LEM2, '(),=/') ) // Elaphia, Elaphiaia
for($I=1; $I<=4; $I++) { // Iapygia (geogr.
$TT0 = trim( scan( $LEM2, $I, '(),=/') );
if(mb_strlen($TT0)>3 and substr($TT0,0,1)!=='-'){ // Hinuleius, C.
$TTT = str_replace(["'".$LEM2, '}}',$LEM2.']]'],
["'".$TT0 ,'|'.$TT0.'}}',$TT0 .']]'],$TEMP.$KUR0);
$UP = mb_substr ( $TT0 , 0 , 1 );
if( $UP == mb_strtoupper( $UP ) ) // Iapygia (geogr.
$ALLart .= RE_justA( $TTT ); }
$TT0 = str_replace(['(',')'],,trim(scan($LEM2,$I, ',=/') ));
if( mb_strlen($TT0)>3 and substr($TT0,0,1)!=='-'){ // Krom(m)yon, Kremmyon
$TT1 = str_replace(["'".$LEM2, '}}',$LEM2.']]'],
["'".$TT0 ,'|'.$TT0.'}}',$TT0. ']]'],$TEMP.$KUR0);
$UP = mb_substr ( $TT0 , 0 , 1 );
if($TT1 != $TTT and $UP == mb_strtoupper($UP) ) // (geogr.
$ALLart .= RE_justA( $TT1 ); }}
if(hat_greek($LEMMA)){ $TT0 = scan( $TEMP,2,"'"); // NL.'xxx'
$TT1 = to_latin($TT0);
if(!isset($ALL['RE:'.$TT1]) ){
$TT2 = "'".$TT1.substr( $TEMP, strpos($TEMP,"'",2));
$TT2 =NL.str_replace('|'.$TT0,'|'.$TT1,$TT2);
$ALLart .= RE_justA( $TT2).$KUR0; }}
if( isset( $ARTI['Big'] ) and $LEM2 != $ARTI['Big']){
$ALLart2 .=NL."'".$ARTI['Big']."'".sprintf('%'.max(0,30-mb_strlen($ARTI['Big'])).'s',' => ');
if(isset($ARTI['Anfang'])) $ALLart2 .= "''.$ARTI['Big'].'';
else $ALLart2 .= "''.$ARTI['Big'].'';
$ALLart2 .= ,"; }
if(isset($ARTI['Wiki2']) and trim( $ARTI['Wiki2']) ) // Wikipedia, ergänzender Schlüssel
foreach( explode ( BLK, $ARTI['Wiki2'] ) as $WORD){
if( substr($WORD,0,2)=='w:') $ARTI['WP'] = RE_2(BLK,$WORD); else
if( substr($WORD,0,2)=='s:') $ARTI['WS'] = RE_2(BLK,$WORD); else
$ARTI['WD'] = RE_2(BLK,$WORD);
if( substr($WORD,0,3)!='d:Q' and trim( $WORD)) {
$QUEL = substr($WORD, 0, $POS = strrpos ( $WORD,':'));
$WORD = substr($WORD, 1 + $POS );
$WIKI = trim( str_replace( ["'",'_'], ['‘',BLK], $WORD));
$TMP2 = NL. "'".$WIKI."'".str_replace(
'|'.$LEM2, '|'.$WIKI, substr($TEMP,strpos($TEMP,'=>')) );
if( $WORD != $LEM2 ){
$ALLbox .= RE_just( RE_just( RE_just($TMP2.$QUEL.BLK.$KUR0,
'=',55,0,1), '//',130,0,1), '$',152,0,1);
if( strpos( $WIKI,'(')!==false ){
$WIKI = str_replace( ['(',')'], , $WIKI );
$TMP2 = NL. "'".$WIKI."'".str_replace (
'|'.$LEM2, '|'.$WIKI, substr($TEMP,strpos($TEMP,'=>')) );
$ALLbox .= RE_just( RE_just( RE_just($TMP2.$QUEL.BLK.$KUR0,
'=',55,0,1), '//',130,0,1), '$',152,0,1); }} }}
$OUT2 .= '"'.$LEMMA;
foreach($SPALTE2 as $SP) if(isset($ARTI[$SP])) $OUT2 .= CSV.$ARTI[$SP];
else $OUT2 .= CSV;
$OUT2 .= '"'.NL; }
$NEUES .= RE_Neuland(0, $LEMMA,$J,$ARTI ); } // Neuland erstellen
if(isset($ARTI ['S von']) ){
if( $LEMMA != $FIRST)$ARTI[$LOCAL] = $ARTI['S von'] ; // Linktext im EXCEL
$ARTI[$PAULY] = substr( $ARTI['Scan' ],0,-4);
$ARTI['Alfa'] = $ARTI[ 'abc' ] ;
$ARTI['BdN' ] =RE_ORDER[$ARTI['Band']]+1 ;}
$ALL[$LEMMA][$J] = $ARTI; // $ARTI speichern
$OUT .= '"'.$LEMMA;
foreach($SPALTEN as $SP) if(isset($ARTI[$SP]))$OUT.=CSV.$ARTI[$SP];else $OUT.=CSV;
$OUT .= '"'.NL; } // foreach $LEMMA & $NACHTRAG
/* // Generalformel: Scan = RE_BAND[$BD][1] + floor( ($SEITE-RE_BAND[$BD][2]) /4 ) Seite-Scan
$FORML = 'wenn($a8=0;hyperlink($b$7&$b$5&""/""&c$4&text(1;$b$6)&"".""&$b$5;c$1)'.
';wenn(und(c$6-2<=$a8;$a8<=(c$7-c$5)*4+c$6+3)'. // Orig==c8
';hyperlink($b$7&$b$5&""/""&c$4&text(c$5+ganzzahl(($a8-c$6)/4);$b$6)&"".""&$b$5;b!c8);t($b$2)))';
$BLATT = '"S.' .CSV.'$'; foreach(RE_ORDER as $BD=>$N) $BLATT.=CSV.$BD; // IX,2 1
$BLATT.='"'.NL.'"ab' .CSV.$FORML; foreach(RE_ORDER as $BD=>$N) $BLATT.=CSV.RE_BAND[$BD][5]; // Aal 2
$BLATT.='"'.NL.'"Jahr'.CSV.$LOCAL; foreach(RE_ORDER as $BD=>$N) $BLATT.=CSV.RE_BAND[$BD][4]; // 1893 3
$BLATT.='"'.NL.'"Scan'.CSV.$HTTP; foreach(RE_ORDER as $BD=>$N) $BLATT.=CSV.RE_BAND[$BD][0]; // P_02 4
$BLATT.='"'.NL.'"Anf.'.CSV.'tif'; foreach(RE_ORDER as $BD=>$N) $BLATT.=CSV.RE_BAND[$BD][1]; // Anfang 5
$BLATT.='"'.NL.'"off' .CSV.'oooo'; foreach(RE_ORDER as $BD=>$N) $BLATT.=CSV.RE_BAND[$BD][2]; // Offset 6
$BLATT.='"'.NL.'"bis' .CSV.$LOCAL; foreach(RE_ORDER as $BD=>$N) $BLATT.=CSV.RE_BAND[$BD][3]; // max 7 */
$KOPF = NL2. $KOPF. NL2.NL2.NL2.$STAR.' Sterne @ Offset '.$OFFSET.NL2.NL2.NL2.date('H:i:s');
// echo NLBR.EC_.'@'.$OFFSET.' Offset => '.$STAR.BLK.substr('********',0,min($STAR,8));
// print_rbde($RBDE['S IX'], 1220 ); // debug
foreach( RE_ORDER as $BD => $N ) // leere Seiten mit vorangehendem Lemma füllen
for($S=RE_BAND[$BD][2]-2; $S<=$RBDE[$BD]['cont'][-1]; $S++) if( $S>1 ){
if( !isset($RBDE[$BD]['cont'][$S]) and isset($RBDE[$BD]['cont'][$S-1]) ) {
$RBDE[$BD]['cont'][$S] = $RBDE[$BD]['cont'][$S-1]; // cont = Lemma ff.
$RBDE[$BD]['c_aN'][$S] = $RBDE[$BD]['c_aN'][$S-1]; // c_aN = 'n_abc'
$RBDE[$BD]['c_AA'][$S] = $RBDE[$BD]['c_AA'][$S-1]; } // c_AA = 'abc'
if( !isset($RBDE[$BD]['erst'][$S]) and isset($RBDE[$BD]['cont'][$S-1]) ) {
$RBDE[$BD]['erst'][$S] = $RBDE[$BD]['cont'][$S-1]; // erst = erstes Lemma
$RBDE[$BD]['e_aN'][$S] = $RBDE[$BD]['c_aN'][$S-1]; // e_aN = 'n_abc'
$RBDE[$BD]['e_AA'][$S] = $RBDE[$BD]['c_AA'][$S-1]; }} // e_AA = 'abc'
if(0) for($S=0; $S<=2908; $S++){ // Version 0 zum
$BLATT .= '"'.NL.'"'.$S.CSV.($S - $S%100); // grossen EXCEL
foreach( RE_ORDER as $BD => $N )
if( isset( $RBDE[$BD]['cont' ][$S]) ) $BLATT .= CSV.substr( $RBDE[$BD]['cont'][$S], 3);
else $BLATT .= CSV; }
$BLATT = 'Band;ABC;Artikel;Seite;NUM'; $LABC = ;
foreach( RE_ORDER as $BD => $N ) // $RBDE = input global
for( $S = 0; $S <= 2908; $S++ )
if( isset( $RBDE[$BD]['erst'][$S]) ){ // statt : cont
$LEMMA = $RBDE[$BD]['erst'][$S];
$BDSEL[ no_halb($BD).'_'.$S ] = $RBDE[$BD]['cont'][$S]; // $BDSEL= output global
if( mod($S+1,4)==0 or $S==1 or $BD=='R' ){
if(isset($RBDE[$BD]['e_AA'][$S])) $ABC = $RBDE[$BD]['e_AA'][$S];
if( $ABC == '_' ) $ABC = $LABC;
if( $S == 1 ) $NR = -1; else $NR =$S ;
if(isset($RBDE[$BD]['e_aN'][$S])) $N_ = $RBDE[$BD]['e_aN'][$S]; else $N_ = 0 ;
$BLATT .= NL.$BD.';'.$ABC.';'.substr($LEMMA,3).';'.$NR.';'.$N_.';'; // erstes Lemma
$LABC = $ABC; }}
/* file_put_contents( ANKER.R_R.'RE-5_Wikidata.csv' ,BOM.$OUT2 );
file_put_contents( ANKER.R_R.'RE-7_Löcher.txt' ,BOM.$LOCH.$KOPF );
file_put_contents( ANKER.R_R.'RE-7_NeuLemm.txt' ,BOM.$NeuLem );
file_put_contents( ANKER.R_R.'RE-7_Neuland.txt' ,BOM.$NEUES );
file_put_contents( ANKER.R_R.'RE-8_Check-Band.csv' ,BOM.$CHECK ); */
file_put_contents( ANKER.R_R.'Input/RE-0_Seiten-in.csv' ,BOM.$BLATT );
file_put_contents( ANKER.AdminC.'ALLart.php' , $ALLart .NL.');?>');
file_put_contents( ANKER.AdminC.'ALLart2.php' , $ALLart2.NL.');?>');
file_put_contents( ANKER.AdminC.'ALLbox.php' , $ALLbox .NL.');?>');
file_put_contents( ANKER.R_R.'Input/RE-6_Werkstatt.csv' ,BOM.$OUT );
RE_var_port( 0, ['BDSEL','ALL','RBDE','LEGEN','LONG'] ); // Variable speichern
$TXT = NLBR.date('H:i:s').' / RE-6_Werkstatt => '.
gg( $N_A= count($ALL ) ).' Artikel sind geplant, die Werkstatt.csv hat '.
gg( $N_O=(substr_count($OUT,NL)-1)).' +1 Zeilen, also:' .NLBR.EC_.'';
if( $DIFF = $N_A -N_Spez_L + $NACHT -$NNH ) $DELTA=', also '.NLBR.EC_.
gg($N_A).' $ALL - '.N_Spez_L.' Spez-Lemma + '.gg($NACHT).' Nachträge != '.
gg($NNH).' $NNH( n_abc )'; else $DELTA= ;
$TXT .= gg( $NNH ).' (+'.N_Spez_L.') Teilartikel bis RE:Zythos'.
' / Benutzungshinweise (Register), die Bilanz ist '.
n0(-$NNH + $N_O-N_Spez_L).'.' .NLBR.EC_.''.
gg( $NNH - $N_A-N_Spez_L).' (+'.N_Spez_L.') Nachträge in den '.
'Teilartikeln (Supplemente), Bilanz ' .
n0(-$NNH + $N_A-N_Spez_L + $NACHT).$DELTA.'.' .NLBR.EC_.''.
gg( $NNH2-120000)." Vorwort, Nachruf 120'xxx = RE_Edit_Info: ".
' Teilartikel sind Artikel oder Nachträge.' .NLBR.EC_.
n0( $NNH3-130000)." Diverse Nachträge 130'xxx = Lemma existiert".
' in WS, fehlt aber im Register ABC.' .NLBR;
return $TXT;
}
head('+ 9_WIKI_RE',,);
echo RE_Starter ( 0 ); // Abkürzungen, Nachweis 20 min 0/1 = off / on +exit
echo NLBR.NLBR.
RE_1_Lemmata ( 0 );
echo OCR_WIKI ( 0 ). // Text ab OCR => Wikisource 0/1 = skip / Todo +exit
RE_1_crawl ( 0 ). // 1 increment 0/1 = kurz / vollständig
RE_2_Register ( 0 ). // 2 Register Band 84x + 44x ABC 0/1 = off / ToDo +exit
RE_3_Display ( 0 ). // 3 Webseiten 2 min Register ABC
Die Vorlage bzw. der Scan für diese Textseite ist fehlerhaft oder fehlt gänzlich. Hilf mit, den Scan aus einer dritten Quelle zu besorgen! Allgemeine Hinweise dazu findest du in der Einführung. |
intern WS
RE_5_Weit_Vers( 0 ); // 5 Geschichte 2 min +Weiterleitung
echo RE_6_Werkstatt( 1,0). // 6 Main=>EXCEL $TODO 0/1, $MSG 0/1 = ohne / mit Meldungen
RE_finish ( 1 ); ?>
</nowiki>
- ↑ '.NL."ASCII Zeichensatz, ".
'American Standard Code for Information Interchange.'.
str_replace(CRLF,BR2,UTF8_BLOCK('U+0030')['TxT']).BR.NBSP.' - ↑ '.NL."".$LINK."" .NL.
'('.str_replace([": ,",", ,"],[':',','],RE_UTF8B($COD,'Anz') .
RE_UTF8B($COD,'Typ').ucwords(RE_UTF8B($COD,'Spr')).',' .NL.
'[https://symbl.cc/en/unicode/blocks/'.RE_UTF8B($COD,'Key') .
' symbl.cc])' ) .BRNL.
str_replace(CRLF,BR2,UTF8_BLOCK($COD)['TxT']).BR.NBSP.' - [[#cite_ref-A'.++$GRP.'_6-0|↑]] Cite error: Ungültiges
<ref>
-Tag; kein Text angegeben für Fußnote mit dem Namen A'.++$GRP.'.