nur ganze Wörter ersetzen (keine Silben)
Holger
- php
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
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
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
Ich brauche auch mit reg. Ausdrücken immer etwas länger, probiers vielleicht mal damit:
preg_replace(/(\s)(WORT)(\s)/isU, \1NEUWORT\3, $text);
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
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