Ankündigung

Einklappen
Keine Ankündigung bisher.

ereg_replace ersetzen...

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • ereg_replace ersetzen...

    Hallöchen Forum,

    ich habe nach einer Umstellung der PHP-Version festgestellt, dass ich eine Funktion mit ereg_replace nutze.
    Ich würde das ganz gerne umstellen und hab schon mit preg_match herumprobiert, aber keine brauchbaren Ergebnisse hinbekommen.
    Der Code sieht wie folgt aus:

    PHP-Code:
        $escluse ereg_replace ($escluse'''[ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÜ]'); 
    und soll in einem String ($escluse) an entsprechender Stelle ein Zeichen durch einen Buchstaben aus dem Array $abc ersetzen.

    Ich hoffe, jemand kann mir dabei helfen....

    lg Micha

  • #2
    Ich hab nicht genau verstanden was du willst, allerdings ist die reihenfolge der argumente die selben:
    mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )
    string ereg_replace ( string $pattern , string $replacement , string $string )
    ich gehe davon aus, du hast pattern und string(subject) verwechselt.
    das mit dem: "durch einen Buchstaben aus dem Array $abc" verstehe ich überhaupt nicht, da in deinem beispiel weder $abc noch ein array vorkommt.
    doch möglicherweise willste auch sowas:
    http://de1.php.net/manual/de/functio...e-callback.php

    Kommentar


    • #3
      preg_ pattern brauchen delimiter: http://php.net/manual/de/regexp.refe...delimiters.php

      Das andere versteh ich auch nicht. In deinem Beispiel oben gibt es kein Array $abc.

      Zum reinen Ersetzen (einzelner Zeichen) brauchst du keine regex. Z.B. kann man da auch mit arrays arbeiten etc.. :

      http://php.net/manual/de/function.str-replace.php
      http://php.net/manual/de/function.strtr.php

      LG
      The string "()()" is not palindrom but the String "())(" is.

      Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
      PHP.de Wissenssammlung | Kein Support per PN

      Kommentar


      • #4
        Ok, war klar, ich drück mich immer umständlich aus

        Also, das ganze gehört zu einem kleinen hangman-Spiel.

        Die Funktion, wo das ereg vorkommt ist folgende:
        PHP-Code:
        function hide_letter ($aword$place$abc) {
            
        $abc array_flip ($abc);
            
        $escluse strtr ($place$abc);
            
        $escluse '['.$escluse.']';
            
        $escluse ereg_replace ($escluse'''[ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÜ]');
            
        $hided ereg_replace ($escluse'_'$aword);
            return 
        $hided;

        Sie hat die Aufgabe, bei gwähltem Buchstaben für das gesuchte Wort in $aword alle Unterstriche _ durch den korrekten Buchstaben zu ersetzen.

        Der Inhalt der übergebenen Variablen sieht bei dem Wort Spaghettiträger und ausgewähltem Buchstaben T z.b. so aus:

        PHP-Code:
        $awordSPAGHETTITRÄGER
        $place
        _T
        $alphabet
        :
            Array
        (
            [
        A] => a
            
        [B] => b
            
        [C] => c
            
        [D] => d
            
        [E] => e
            
        [F] => f
            
        [G] => g
            
        [H] => h
            
        [I] => i
            
        [J] => j
            
        [K] => k
            
        [L] => l
            
        [M] => m
            
        [N] => n
            
        [O] => o
            
        [P] => p
            
        [Q] => q
            
        [R] => r
            
        [S] => s
            
        [T] => t
            
        [U] => u
            
        [V] => v
            
        [W] => w
            
        [X] => x
            
        [Y] => y
            
        [Z] => z
            
        [Ä] => ae
            
        [Ü] => ue
            
        [Ö] => oe

        Der Rückgabewert $hided ist das dann Wort, in dem alle nicht geratenen Buchstaben noch durch _ maskiert sind und der gewählte Buchstabe sichtbar ist
        Ich hoffe das war jetzt ein bisschen klarer...

        Kommentar


        • #5
          Nicht etwas umständlich?

          Wenn ich dich richtig verstanden habe solltest du das ganze auch ohne extra Regex und co lösen können.


          Als Inspiration(nicht Funktionsgleich mit deiner Funktion), im Forum getippt:
          PHP-Code:
          /**
           *
           * @param string $word Das Wort
           * @param array|string[] $letterSelection Lowercased array mit zu zeigenden Buchstaben
           */
          function show_selected_letters($word$letterSelection = []) {
              
          $wordComponents str_split(strtolower($word));
              
          $diff array_diff($wordComponents$letterSelection);
              
              return 
          str_ireplace($diff' _ '$word);
          }

          var_dump(show_selected_letters('Baum', ['b'])); // B _ _ _
          var_dump(show_selected_letters('Apfelbaum', ['a''f''m'])); // A _ f _ _ _ a _ m
          var_dump(show_selected_letters('Baum', ['g'])); // _ _ _ _
          var_dump(show_selected_letters('php.de', ['.'])); // _ _ _ . _ _ 
          Ansonsten als Lesestoff:

          http://php.net/manual/de/reference.p...tern.posix.php
          Zitat von nikosch
          Naja, anscheinend spricht die Steckdose kein HTTP. LOL

          Kommentar

          Lädt...
          X