Mehrere Wörter in einer Text Datei suchen und ändern

  • Halo,

    möchte ganz gerne Werte in einer *.txt Datei ändern.
    Das geht auch so weit zumindest mit einem Wert nur muss das Suchmuster mehrere Werte erfassen und dann entsprechend ändern.
    Möchte nicht für alle Farbcodes immer wieder das selbe Suchmuster Schreiben.
    Suchcode mit nur einen Namen:

    [autoit]

    $filename = (@ScriptDir & "\liste.html")
    $find = "bkada"
    $replace ="[color=0x99FF00]bkada[/color]"
    $retval = _ReplaceStringInFile($filename,$find,$replace)
    $hFile = FileOpen(@ScriptDir & "\Farbe.txt", 2)
    FileWrite($hFile, $replace)
    FileClose($hFile)

    [/autoit]
    Text Datei

    177 Benutzer (Dienstag, 1. Februar 2011, 19:50)</p>
    <p class="smallFont">
    <a href="index.php?page=User&amp;userID=19454&amp;s=1d032cb35b08a565b8ebab028cd93c2004a5c940">forgett</a>, <a href="index.php?page=User&amp;userID=3286&amp;s=1d032cb35b08a565b8ebab028cd93c2004a5c940">blumiger</a>, <a href="index.php?page=User&amp;userID=15864&amp;s=1d032cb35b08a565b8ebab028cd93c2004a5c940">Diesel</a>, <a href="index.php?page=User&amp;userID=19527&amp;s=1d032cb35b08a565b8ebab028cd93c2004a5c940">K007</a>, <a href="index.php?page=User&amp;userID=19529&amp;s=1d032cb35b08a565b8ebab028cd93c2004a5c940">Destro</a>, <a href="index.php?page=User&amp;userID=500&amp;s=1d032cb35b08a565b8ebab028cd93c2004a5c940"><span style="color: #09f">nullspammer</span></a>, <a href="index.php?page=User&amp;userID=8721&amp;s=1d032cb35b08a565b8ebab028cd93c2004a5c940">klark13</a>, <a href="index.php?page=User&amp;userID=19519&amp;s=1d032cb35b08a565b8ebab028cd93c2004a5c940">morester</a>, <a href="index.php?page=User&amp;userID=14183&amp;s=1d032cb35b08a565b8ebab028cd93c2004a5c940">loser</a>, <a href="index.php?page=User&amp;userID=19525&amp;s=1d032cb35b08a565b8ebab028cd93c2004a5c940">birkenauer</a>, <a href="index.php?page=User&amp;userID=5&amp;s=1d032cb35b08a565b8ebab028cd93c2004a5c940"><span style="color: #fd4">nassim</span></a>, <a href="index.php?page=User&amp;userID=5258&amp;s=1d032cb35b08a565b8ebab028cd93c2004a5c940">murmel64</a>, <a href="index.php?page=User&amp;userID=17633&amp;s=1d032cb35b08a565b8ebab028cd93c2004a5c940">009</a>, <a href="index.php?page=User&amp;userID=14555&amp;s=1d032cb35b08a565b8ebab028cd93c2004a5c940">jostino</a>, <a href="index.php?page=User&amp;userID=15571&amp;s=1d032cb35b08a565b8ebab028cd93c2004a5c940">markantos</a>, <a href="index.php?page=User&amp;userID=3069&amp;s=1d032cb35b08a565b8ebab028cd93c2004a5c940">silan</a>, <a href="index.php?page=User&amp;userID=19526&amp;s=1d032cb35b08a565b8ebab028cd93c2004a5c940">xoros</a>, <a href="index.php?page=User&amp;userID=7342&amp;s=1d032cb35b08a565b8ebab028cd93c2004a5c940">frankk</a>, <a href="index.php?page=User&amp;userID=12965&amp;s=1d032cb35b08a565b8ebab028cd93c2004a5c940">klastiker</a>, <a href="index.php?page=User&amp;userID=2&amp;s=1d032cb35b08a565b8ebab028cd93c2004a5c940"><strong><span style="color: #0f0">bkada</span></strong></a>, <a href="index.php?page=User&amp;userID=566&amp;s=1d032cb35b08a565b8ebab028cd93c2004a5c940">uli641</a>, <a href="index.php?page=User&amp;userID=15611&amp;s=1d032cb35b08a565b8ebab028cd93c2004a5c940">jang</a>, <a href="index.php?page=User&amp;userID=33&amp;s=1d032cb35b08a565b8ebab028cd93c2004a5c940">Lilo34</a>, <a href="index.php?page=User&amp;userID=691&amp;s=1d032cb35b08a565b8ebab028cd93c2004a5c940">kaster</a>, <a href="index.php?page=User&amp;userID=6008&amp;s=1d032cb35b08a565b8ebab028cd93c2004a5c940">mongo</a>, <a href="index.php?page=User&amp;userID=19520&amp;s=1d032cb35b08a565b8ebab028cd93c2004a5c940">richter1</a>, <a href="index.php?page=User&amp;userID=1788&amp;s=1d032cb35b08a565b8ebab028cd93c2004a5c940">noop</a>, <a href="index.php?page=User&amp;userID=9282&amp;s=1d032cb35b08a565b8ebab028cd93c2004a5c940">planer</a>, <a href="index.php?page=User&amp;userID=11861&amp;s=1d032cb35b08a565b8ebab028cd93c2004a5c940">justusF</a>, <a href="index.php?page=User&amp;userID=428&amp;s=1d032cb35b08a565b8ebab028cd93c2004a5c940"><span style="color: #09f">sinker</span></a>, <a href="index.php?page=User&amp;userID=19528&amp;s=1d032cb35b08a565b8ebab028cd93c2004a5c940">tropfer</a> </p>
    </div>
    </div>

    In dieser Text Datei suche ich nun bestimmte Namen die auch eine Farbe haben. Diese Farbwerte möchte ich dann ändern in bb code.
    Das diese Zeile
    page=User&amp;userID=428&amp;s=1d032cb35b08a565b8ebab028cd93c2004a5c940"><span style="color: #09f">sinker</span></a>, <a href="index.php?
    in diese geändert wird
    page=User&amp;userID=428&amp;s=1d032cb35b08a565b8ebab028cd93c2004a5c940"><span style="color: {color=0x4876FF]sinker[/color]</span></a>, <a href="index.php?
    oder aber auch nur in
    {color=0x4876FF]sinker[/color]
    wird dann beides später in der Gui richtig angezeigt.
    Wie bekomme ich das ganze als Schleife hin mit mehr als nur einen Suchbegriff?

    Hoffe mal das ich es nicht wieder zu umständlich beschrieben habe.

    mfg
    oh-ha

    Es gibt drei Wahrheiten: deine Wahrheit, meine Wahrheit und die Wahrheit

    2 Mal editiert, zuletzt von oh-ha (6. Juni 2011 um 16:32)

  • Hmmm keiner eine Idee ?
    Wieder mal schlecht beschrieben ?
    Oder ist es was verbotenes den Quelltext eines Forums auszulesen ?


    mfg
    oh-ha

    Es gibt drei Wahrheiten: deine Wahrheit, meine Wahrheit und die Wahrheit

  • loooool bin Farbenblind und habe so meine Schwierigkeiten die richtige rauszusuchen.
    Ist kein Witz.

    Ist aber im Prinzip auch egal, man soll nur sehen das halt ein Mod oder Admin anwesend ist.
    Bereichsmods sind bei uns hellblau und Globale halt dunkel blau. Soll sich nur unterscheiden mehr nicht.
    Versuche mich an einem Tool das mir Anzeigt was im Forum so los ist.
    Zum einen soll es mir die neuesten Beiträge anzeigen was schon mal geht
    Dann die "wer ist Online Liste" was noch nicht geht wegen der Farben.
    Dann soll es mir noch Anzeigen was in der Shoutbox los ist was gerade in Arbeit ist.


    mfg
    oh-ha

    Es gibt drei Wahrheiten: deine Wahrheit, meine Wahrheit und die Wahrheit

  • Wir können dir nicht helfen wenn du nicht konkret sagst was warum in welchen Wert umgewandelt werden soll.
    "Irgendwas" lässt sich schlecht in Programmcode gießen.
    Sag doch mal klar auf welcher Grundlage Werte wie geändert werden sollen.

  • Stelle mir das so vor das man die Namen der Admins, mods und Vips in eine Liste schreibt mit dem Farbcode
    der dann verwendet werden soll. Bekomme nur keine Schleife hin die mir die Onlineuser mit der Liste vergleicht.
    und wenn ein treffer das ist den Text ändert.

    Liste.ini
    [bkada]
    {color=0x4876FF]sinker[/color]
    [Blubstar]
    {color=0xFFFF66]Blubstar[/color]
    [name2]
    {color=0xFFFF00]name2[/color]

    mfg
    oh-ha

    Es gibt drei Wahrheiten: deine Wahrheit, meine Wahrheit und die Wahrheit

  • Und z.B. über ein Array?
    Mal als Beispiel (Hab die Syntaxvorgabe von dir 1:1 übernommen obwohl ich der Meinung bin das ein paar Klammerkonstrukte falsch sind und Anführungszeichen nicht geschlossen werden):

    Spoiler anzeigen
    [autoit]

    Global $a_Farben[4][2] = [["bkada", "0x99FF00"], ["sinker", "0x4876FF"], ["Blubstar", "0xFFFF66"], ["name2", "0xFFFF00"]]

    [/autoit] [autoit][/autoit] [autoit]

    Global $s_FileName = "Test.txt"
    Global $s_File = FileRead($s_FileName) ; Datei auslesen

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 0 To UBound($a_Farben) - 1
    $s_File = StringRegExpReplace($s_File, '<span style="color: #([[:xdigit:]]{3})">' & $a_Farben[$i][0] & '</span>', '<span style="color: {color=' & $a_Farben[$i][1] & ']' & $a_Farben[$i][0] & '[/color]</span>')
    Next

    [/autoit] [autoit][/autoit] [autoit]

    Global $h_File = FileOpen($s_FileName, 2) ; Öffne Datei zum schreiben und lösche alten Inhalt
    FileWrite($h_File, $s_File)
    FileClose($h_File)

    [/autoit]
  • Danke dir,

    werde es mal probieren.
    Das mit den Klammern und Anführungszeichen bekomme ich schon hin, wußte halt nur nicht wie ich es umsetzen sollte.
    Denke mal das der Ansatz von dir schon in die richtige Richtung geht.

    mfg
    oh-ha

    Es gibt drei Wahrheiten: deine Wahrheit, meine Wahrheit und die Wahrheit

  • Geht dank deiner Hilfe :thumbup:

    Nur wenn einer mal selbiges sucht. Habe es so angepasst das es mit den Klammern und Anführungszeichen passt.

    [autoit]


    Global $a_Farben[4][2] = [["bkada", "0x99FF00"], ["sinker", "0x4876FF"], ["Blubstar", "0xFFFF66"], ["name2", "0xFFFF00"]]

    [/autoit][autoit][/autoit][autoit]

    Global $s_FileName = "Test.txt"
    Global $s_File = FileRead($s_FileName) ; Datei auslesen

    [/autoit][autoit][/autoit][autoit]

    For $i = 0 To UBound($a_Farben) - 1
    $s_File = StringRegExpReplace($s_File, '<span style="color: #([[:xdigit:]]{3})">' & $a_Farben[$i][0] & '</span>', '[color=' & $a_Farben[$i][1] & ']' & $a_Farben[$i][0] & '[/color]</span>')
    $between = _StringBetween($s_File, '<span style="color: #([[:xdigit:]]{3})">', ".....");zeigt es nicht an wenn ich das nicht lösche
    Next

    [/autoit][autoit][/autoit][autoit]

    Global $h_File = FileOpen($s_FileName, 2) ; Öffne Datei zum schreiben und lösche alten Inhalt
    FileWrite($h_File, $s_File)
    FileClose($h_File)

    [/autoit]

    mfg
    oh-ha

    Es gibt drei Wahrheiten: deine Wahrheit, meine Wahrheit und die Wahrheit