Holger: nur ganze Wörter ersetzen (keine Silben)

Hallo,

möchte in einem String ganze Wörter ersetzen.
Habe das hiermit versucht:

$text_neuwort=array();
$abfrage = "SELECT * from $tab_neuwort";
$result = mysql_query($abfrage,$conn);
while ($row = mysql_fetch_array ($result))
{
$text_neuwort[$row["wort"]]=$row["neuwort"];
}
$satz= strtr($neuwort,$text_neuwort);
echo $satz;

Allerdings werden damit auch Silben ersetz.
Aus "Haus" soll z.B. "Huis" werden, aber nur, wenn ich nur "Haus" habe. "Baumhaus" soll nicht "Baumhuis" werden, sondern entsprechende der Datenbank "Baumnescht" oder eben garnicht behandet werden.

Was muss ich in meiner while-Abfrage ändern, damit nur ganze Wörter ersetzt werden?

Danke für Eure Hilfe,
Holger

  1. Allerdings werden damit auch Silben ersetz.
    Aus "Haus" soll z.B. "Huis" werden, aber nur, wenn ich nur "Haus" habe. "Baumhaus" soll nicht "Baumhuis" werden, sondern entsprechende der Datenbank "Baumnescht" oder eben garnicht behandet werden.

    Reguläre ausdrücke sind deine Freunde...
    Schau dir das mal an:

    http://www.php.net/manual/en/function.preg-replace.php

    1. Hallo LazyWolf,

      hab mir das mit den reg. Ausdrücken mal angeschaut - steige da aber nicht durch :-( ist ne Nummer zu hoch für mich ... Leider finde ich auch nicht bei google oder so.

      Hast Du eventuell eine Idee?

      Kannst Du mir sagen was ich maceh muss, habe ich Forum das gefunden:

      $textneu = preg_replace('/>([^<]+)</e',"'>'.strtr('$1',$ersetzen).'<'",$textalt);

      Läuft aber nur mit HTML-Dateien - will das ganze mit Text-Dateien machen, also ohne TAGs, ohne >/< und ausserdem nimmt das auch nicht nur ganze Wörter :-(

      Danke nochmal,

      Holger

      1. Ich brauche auch mit reg. Ausdrücken immer etwas länger, probiers vielleicht mal damit:

        preg_replace(/(\s)(WORT)(\s)/isU, \1NEUWORT\3, $text);

        1. Hallo LazyWolf

          Ich brauche auch mit reg. Ausdrücken immer etwas länger, probiers vielleicht mal damit:

          preg_replace(/(\s)(WORT)(\s)/isU, \1NEUWORT\3, $text);

          Ok ich probiers, danke für die Mühe - aber wie mache ich das jetzt, wenn ich einen string $string_old habe und diesen mit Deinem reg. Ausdruck behandle, wobei jedes einzelne Wort mit den Wörtern aus dem Array $arrry_woerter("wort"=>"neuwort") ersetzt werden soll?
          Als Ergebnis soll dann der String $string_neu resultieren.

          Danke für Deine Mühe,
          Holger

          1. Ok ich probiers, danke für die Mühe - aber wie mache ich das jetzt, wenn ich einen string $string_old habe und diesen mit Deinem reg. Ausdruck behandle, wobei jedes einzelne Wort mit den Wörtern aus dem Array $arrry_woerter("wort"=>"neuwort") ersetzt werden soll?
            Als Ergebnis soll dann der String $string_neu resultieren.

            Du füllst die Patterns und die Replace Pattern jeweils in einen Array und statt dem Pattern und Replace Pattern da oben setzt du den Array...

            $string_neu = preg_replace([PATTERN_ARRAY], [REPLACE_PATTERN_ARRAY], $string_alt);

            M.f.G