Willi H.: Regulärer Ausdruck: Nur ein Teil des Patterns case-insensitive

Beitrag lesen

Guten Abend, Vinzenz!

und im Text, ich zitiere

"It is also possible to unset these options by preceding
     the letter with a hyphen"

Natürlich, wo du recht hast, ... :-)

Testen wir das Verhalten mit folgenem Codefragment:

$haystack = array(

'abcd',
        'abCd',
        'abCD',
        'abcD');

$pattern = '/ab(?i)c(?-i)d/';
    $result = array();

# Testen wir den RegEx
    foreach ($haystack as $needle) {
        $matches = array();
        $match   = '';
        if (preg_match($pattern, $needle, $matches)) {
            # es kann maximal ein Match geben :-)
            $match = $matches[0];
        }
        $result[$needle] = $match;
    }

# und schauen uns das Ergebnis an:
    echo "<pre>\n";
    foreach($result as $key => $value) {
        echo $key, " => ", $value, "\n";
    }
    echo "</pre>\n";
    /*
        gibt folgendes aus:
            abcd => abcd
            abCd => abCd
            abCD =>
            abcD =>
    */


>   
> Passt!  
>   
> Zusätzlich gilt, dass innerhalb eines Subpatterns die Änderung nur für das Subpattern gilt. Über diese Schiene kannst Du ebenfalls unterschiedliche Optionen nutzen.  
  
Sehr schön! Mir gefällt dein Beispiel mit der Stecknadel im Heuhaufen. :-)  
  
Ob man nun bei Verwendung von Set und Unset (?i) oder ?i: zum Einschalten und (?-i) oder ?-i zum Ausschalten verwendet, ist aber Jacke wie Hose, oder?  
  
Schöne Grüße vom Willi