heinetz: Problem mit regulärem Ausdruck

Hallo Forum,

ich steh' grad mal ziemlich auf dem Schlauch und kann mir
folgendes nicht erklären:

$mark_strA[$z] = "ärzt";  
$string = "Bei Ärztlichen Behandlungsfehlern stehen wir Ihnen zur Seite";  
echo preg_replace('/('.$mark_strA[$z].')/i', '<span class="s_result">${1}</span>', $string);  
exit;  

Ich würde folgende Ausgabe erwarten:
------------------------------------
Bei <span class="s_result">Ärzt</span>lichen Behandlungsfehlern stehen wir Ihnen zur Seite

Leider funktioniert das aus mir unerklärlichen Gründen nicht
mehr. Kann das in irgendeiner Form mit Zeichenkodierungen
zusammenhängen?

danke für Tipps und

beste gruesse,
heinetz

  1. Hi,

    $mark_strA[$z] = "ärzt";

    $string = "Bei Ärztlichen Behandlungsfehlern stehen wir Ihnen zur Seite";
    echo preg_replace('/('.$mark_strA[$z].')/i', '<span class="s_result">${1}</span>', $string);
    exit;

    
    >   
    > Ich würde folgende Ausgabe erwarten:  
    > ------------------------------------  
    > Bei <span class="s\_result">Ärzt</span>lichen Behandlungsfehlern stehen wir Ihnen zur Seite  
    >   
    > Leider funktioniert das aus mir unerklärlichen Gründen nicht  
    > mehr. Kann das in irgendeiner Form mit Zeichenkodierungen  
    > zusammenhängen?  
      
    Ja, tut es.  
      
    PHP „kann“ immer noch kein Unicode, sondern betrachtet darin mit mehreren Bytes repräsentierte Zeichen als mehrere Zeichen.  
    Und dem zu Folge ist der Modifier i hier in so fern wirkungslos, dass PHP nicht erkennen kann, dass Ä die „grosse“ Version von ä ist.  
      
    Nimm den Modifier u hinzu.  
      
    MfG ChrisB  
      
    
    -- 
    “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
    
    1. Hi,

      Ja, tut es.

      PHP „kann“ immer noch kein Unicode, sondern betrachtet darin mit mehreren Bytes repräsentierte Zeichen als mehrere Zeichen.
      Und dem zu Folge ist der Modifier i hier in so fern wirkungslos, dass PHP nicht erkennen kann, dass Ä die „grosse“ Version von ä ist.

      Ich habe nun herausgefunden, warum das bisher und jetzt nicht mehr
      funktioniert. Ich habe früher '&auml;' in '&Auml;rzte' gesucht und
      bedingt durch das /i auch gefunden.

      Nimm den Modifier u hinzu.

      ... was aber scheinbar voraussetzt, dass hier von utf8 die Rede
      ist(?). Davon muss ich mich leider gerade erstmal verabschieden.

      gibt's Alternativen?

      beste gruesse,
      heinetz

      1. Hi,

        was besseres ist mir nicht eingefallen, aber das hier tut
        aufden ersten Blick was es soll:

        $mark_strA[$z] = "ärzt";

        $string = "Bei Ärztlichen Behandlungsfehlern stehen wir Ihnen zur Seite";
        echo preg_replace('/('.$mark_strA[$z].')/i', '<span class="s_result">${1}</span>', $string);
        exit;

          
        ~~~php
          
        $mark_strA[$z] = "ärzt";  
        $string = "Bei Ärztlichen Behandlungsfehlern stehen wir Ihnen zur Seite";  
        echo utf8_decode(preg_replace('/('.utf8_encode($mark_strA[$z]).')/iu', '<span class="s_result">${1}</span>', utf8_encode($string)));  
        exit;  
        
        

        nicht schön, aber selten ;)

        beste gruesse,
        heinetz