Ankündigung

Einklappen
Keine Ankündigung bisher.

Frage zu preg_replace in Verbindung mit Umlauten

Einklappen

Neue Werbung 2019

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

  • #16
    Zitat von j.durini Beitrag anzeigen
    nutzt man eig. noch ereg ?
    Direkt nicht mehr. Wer aber darauf steht, kann sich die MBString-Regex-Verarbeitung so zurechtbiegen, dass sie mit der POSIX-Syntax umgehen kann. Im Gegensatz zu den "klassischen" Ereg-Funktionen kann man so auch mit Unicode und diversen asiatischen Zeichenkodierungen arbeiten.

    Zitat von christiancg80 Beitrag anzeigen
    es hakt daran, wie ich die im ersten Post geschriebene Funktion entsprechend mit dem alternativen Befehl preg_replace_callback() so anpasse, dass sie auch ab der Version PHP 5.5 zu 100% funktioniert.
    Ich bin auf diesem Gebiet wie geschrieben nicht DER Spezi und wäre da über deine/eure Hilfe extrem dankbar.
    Die ganze Funktion baue ich dir nicht um. Aber hier kommt ein wenig Hilfe zur Selbsthilfe am von mermshaus gegebenen Beispiel:

    Aus
    PHP-Code:
    $str preg_replace('/\\b(\\w)/eu''strtoupper("$1")'strtolower(trim($str))); 
    wird
    PHP-Code:
    preg_replace_callback(
        
    // PCRE ohne den /e-Modifier
        
    '/\\b(\\w)/u',
        
    // die anonyme (weil ohne Namen) Callback-Funktion
        
    function ($hits) {
            
    // es wird das gesamte Treffer-Array übergeben
            // um bspw. $1 wie beim /e-Beispiel zu holen,
            // referenzierst du den entsprechend nummerierten Array-Eintrag
            
    return strtoupper($hits[1]);
        },
        
    // bleibt wie gehabt: Vorbereitung des Eingabe-Strings
        
    strtolower(trim($str))
    ); 
    Die Vorgehensweise bei komplexeren Ersetzungen ist ähnlich. Du holst dir die gewünschten Teilstrings aus dem Treffer-Array, bearbeitest sie und gibst das Ergebnis mit return zurück.

    Beim Bau der Ersetzen-Funktion ("Callback") ist es hilfreich, sich das Treffer-Array anzeigen zu lassen. So bekommst du schneller einen Überblick, was die RegEx-Suche gefunden hat.
    Wenn man die Wurst schräg anschneidet, hält sie länger, weil die Scheiben größer sind.

    Kommentar


    • #17
      OT:

      Danke, ich wollte auch noch ein Beispiel posten, war aber nicht so richtig motiviert.

      Die Sache ist eben: Du (christiancg80) hast offensichtlich irgendwo eine Funktion ausgegraben, mit der wir nichts am Hut haben (ich habe keine große Lust, zu durchdenken, ob das alles so klappt, was der Autor da macht, und ob das Anpassungen übersteht) und mit der auch du nichts am Hut hast. „Wir“ (ich jedenfalls) fühlen uns nicht unbedingt dafür zuständig, den Code anderer Leute so zu fixen, dass er das tut, was wiederum andere Leute wollen.

      Es ist immer cool (und im Sinne dieses Forums), wenn ihr es zumindest dann erkennbar selbst versucht.

      Kommentar

      Lädt...
      X