Heinz Goldmann: preg_replace findet keine umlaute

Hallo Forum,

ich habe folgende preg_replace-anweisung, die mir schwierigkeiten macht:

$finde[0] = "~[TD=([0-9]{1,})U]([0-9a-zA-Z])~i";
 $finde[1] = "/[/TDU]/";

$ersetze[1] = "<td style='background-color:#7F9FC0; color:#000066; font-size:\1px;' align='center' colspan='2'>\2";
 $ersetze[0] = "</td>";

$veriable = preg_replace($finde, $ersetze, $inhalt);

Leider werden mit dieser Anweisung keine Ümlaute erkannt.
Beispiel:

$inhalt = [TD=12U]Überschrift[/TDU]

Dabei sollte folgendes herauskommen:

<td style='background-color:#7F9FC0; color:#000066; font-size:12px;' align='center' colspan='2'>Überschrift</td>

Das tut es aber nicht, weil der Buchstabe "Ü" aus Überschrift nicht erkannt wird. Ersetze ich "Ü" durch "U" klappt die Umwandlung.

Hat jemand einen Tipp, wie das ganze aussehen muss, damit die deutschen Umlaute richtig erkannt werden?

Für Eure Mühe schonmal vielen Dank im voraus

Gruß
Heinrich

  1. Moin!

    $finde[0] = "~[TD=([0-9]{1,})U]([0-9a-zA-Z])~i";

    $finde[0] = "~[TD=([0-9]{1,})U]([0-9a-zA-ZäüößÄÜÖ])~i";

    MFFG (Mit freundlich- friedfertigem Grinsen)

    fastix®

    --
    Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
    1. Hallo ..

      $finde[0] = "~[TD=([0-9]{1,})U]([0-9a-zA-Z])~i";
      $finde[0] = "~[TD=([0-9]{1,})U]([0-9a-zA-ZäüößÄÜÖ])~i";

      Sorry, hätte ich wohl dazuschreiben müssen: Dererlei Versuche habe ich schon gemacht. Leider klappt das auch nicht.

      Trotzdem Danke für den Tipp!

      Gruß
      Heinrich

      1. Moin!

        Hallo ..

        Sorry, hätte ich wohl dazuschreiben müssen: Dererlei Versuche habe ich schon gemacht. Leider klappt das auch nicht.

        Ok. Versuchs mal mit :$finde[0] = "~[TD=([0-9]{1,})U]([0-9a-zA-Z&;])~i";
        Falls die Umlaute schon in htmlentities umgewandelt sind....

        MFFG (Mit freundlich- friedfertigem Grinsen)

        fastix®

        --
        Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
        1. Hi,

          Ok. Versuchs mal mit :$finde[0] = "~[TD=([0-9]{1,})U]([0-9a-zA-Z&;])~i";

          Du bist ein Schatz :))

          Falls die Umlaute schon in htmlentities umgewandelt sind....

          Das wird es gewesen sein. Bedanke mich vielmals für Deine Hilfe!!

          Gruß
          Heinrich

  2. Hallo,
    schreibt doch lieber
    (.*) als ([0-9a-zA-Z])

    Dann erkennt er alle Zeichen, und fügt diese dann dort ein.

    MFG
    Andavos

    --
    http://www.rpgcommunity.de/clanwissen/index.php Webdesign, PHP, Clan-Aufbau und mehr
    1. Hallo Andavos,

      schreibt doch lieber
      (.*) als ([0-9a-zA-Z])

      ggf. hinter dem * noch ein ?, um den Ausdruck auf "ungierig" zu schalten (siehe http://selfhtml.teamone.de/cgiperl/sprache/regexpr.htm#gierig_genuegsam).

      Grüße aus Nürnberg
      Tobias

      --
      Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|